# Оновлення коду optparse

Originally, the `argparse` module had attempted to maintain compatibility with `optparse`. However, `optparse` was difficult to extend transparently, particularly with the changes required to support `nargs=` specifiers and better usage messages. When most everything in `optparse` had either been copy-pasted over or monkey-patched, it no longer seemed practical to try to maintain the backwards compatibility.

The `argparse` module improves on the `optparse` module in a number of ways including:

- Обробка позиційних аргументів.

- Supporting subcommands.

- Дозволяє альтернативні префікси параметрів, наприклад `+` і `/`.

- Обробка нуля або більше та одного або кількох аргументів стилю.

- Створення більш інформативних повідомлень про використання.

- Забезпечення набагато простішого інтерфейсу для користувацького `типу` і `дії`.

Шлях часткового оновлення з `optparse` до `argparse`:

- Замініть усі виклики `optparse.OptionParser.add_option()` на виклики `ArgumentParser.add_argument()`.

- Замініть `(options, args) = parser.parse_args()` на `args = parser.parse_args()` і додайте додаткові виклики `ArgumentParser.add_argument()` для позиційних аргументів. Майте на увазі, що те, що раніше називалося `options`, тепер у контексті `argparse` називається `args`.

- Замініть `optparse.OptionParser.disable_interspersed_args()` на використання `parse_intermixed_args()` замість `parse_args()`.

- Замініть дії зворотного виклику та аргументи ключового слова `callback_*` на аргументи `type` або `action`.

- Замініть назви рядків для ключових аргументів `type` відповідними об’єктами типу (наприклад, int, float, complex тощо).

- Замініть `optparse.Values` на `Namespace` і `optparse.OptionError` і `optparse.OptionValueError` на `ArgumentError`.

- Замініть рядки неявними аргументами, такими як `%default` або `%prog` стандартним синтаксисом Python, щоб використовувати словники для форматування рядків, тобто `%(default)s` і `%(prog)s`.

- Замініть аргумент `version` конструктора OptionParser на виклик `parser.add_argument('--version', action='version', version=' <the version> ')`.