###
6.20.3.1 Creating and populating the parser

There are several ways to populate the parser with options. One way is to pass a list of `Options` to the `OptionParser` constructor:

    from optparse import OptionParser, make_option
    [...]
    parser = OptionParser(option_list=[
        make_option("-f", "--filename",
                    action="store", type="string", dest="filename"),
        make_option("-q", "--quiet",
                    action="store_false", dest="verbose")])

(`make_option()` is a factory function for generating `Option` objects.)

For long option lists, it may be more convenient/readable to create the list separately:

    option_list = [make_option("-f", "--filename",
                               action="store", type="string", dest="filename"),
                   [... more options ...]
                   make_option("-q", "--quiet",
                               action="store_false", dest="verbose")]
    parser = OptionParser(option_list=option_list)

Or, you can use the `add_option()` method of `OptionParser` to add options one-at-a-time:

    parser = OptionParser()
    parser.add_option("-f", "--filename",
                      action="store", type="string", dest="filename")
    parser.add_option("-q", "--quiet",
                      action="store_false", dest="verbose")

This method makes it easier to track down exceptions raised by the `Option` constructor, which are common because of the complicated interdependencies among the various keyword arguments. (If you get it wrong, `optparse` raises `OptionError`.)

`add_option()` can be called in one of two ways:

- pass it an `Option` instance (as returned by `make_option()`)
- pass it any combination of positional and keyword arguments that are acceptable to `make_option()` (i.e., to the `Option` constructor), and it will create the `Option` instance for you (shown above).