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
storeorappendactions, 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
nargsarguments, 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.





