6.21.4.1 Defining a callback option
As always, the easiest way to define a callback option is by using the
parser.add_option()
method. Apart from action, the only option
attribute you must specify is callback
, the function to call:
parser.add_option("-c", action="callback", callback=my_callback)
callback
is a function (or other callable object), so you must have
already defined my_callback()
when you create this callback option.
In this simple case, optparse doesn't even know if -c takes any
arguments, which usually means that the option takes no arguments--the
mere presence of -c on the command-line is all it needs to know. In
some circumstances, though, you might want your callback to consume an
arbitrary number of command-line arguments. This is where writing
callbacks gets tricky; it's covered later in this section.
optparse always passes four particular arguments to your callback, and it
will only pass additional arguments if you specify them via
callback_args
and callback_kwargs
. Thus, the minimal callback
function signature is:
def my_callback(option, opt, value, parser):
The four arguments to a callback are described below.
There are several other option attributes that you can supply when you define a callback option:
- has its usual meaning: as with the
store
orappend
actions, it instructs optparse to consume one argument and convert it to type. Rather than storing the converted value(s) anywhere, though, optparse passes it to your callback function. - also has its usual meaning: if it is supplied and > 1, optparse will
consume
nargs
arguments, each of which must be convertible to type. It then passes a tuple of converted values to your callback. - a tuple of extra positional arguments to pass to the callback
- a dictionary of extra keyword arguments to pass to the callback
See About this document... for information on suggesting changes.