Python: Извлечение переменных из пространства имен

Я использую argparse в python для анализа аргументов командной строки:

parser = ArgumentParser() parser.add_argument("--a") parser.add_argument("--b") parser.add_argument("--c") args = parser.parse_args() 

Теперь я хочу выполнить некоторые вычисления с помощью a , b и c . Однако мне очень args.a + args.b + args.c писать args.a + args.b + args.c все время.

Поэтому я извлекаю эти переменные:

 a, b, c = [args.a, args.b, args.c] 

Так что я могу написать a + b + c .

Есть ли более элегантный способ сделать это?

Ручное извлечение становится очень утомительным и подвержено ошибкам при добавлении многих аргументов.

2 Solutions collect form web for “Python: Извлечение переменных из пространства имен”

Если вы хотите, чтобы они были глобальными, вы можете:

 globals().update(vars(args)) 

Если вы находитесь в функции и хотите, чтобы они были локальными переменными этой функции, вы можете сделать это в Python 2.x следующим образом:

 def foo(args): locals().update(vars(args)) print a, b, c return exec "" # forces Python to use a dict for all local vars # does not need to ever be executed! but assigning # to locals() won't work otherwise. 

Этот трюк не работает в Python 3, где exec не является оператором, и, вероятно, в других вариантах Python, таких как Jython или IronPython.

В целом, однако, я бы рекомендовал использовать более короткое имя для объекта args или использовать ваш буфер обмена. 🙂

Вы можете добавить вещи в локальную область, вызвав locals() . Он возвращает словарь, который представляет текущую доступную область. Вы можете также присвоить ему значения – locals()['a'] = 12 приведет a существованию в локальной области со значением 12.

  • Аргумент Python для отображения версии программы с форматированием строки прога и версии
  • Argparse - различать без опций, вызывается опция и параметр, вызываемый аргументом?
  • Требуется аргумент call_command
  • python argparse с зависимостями
  • Тестирование модуля Argparse: подавить справочное сообщение
  • Python. Argparser. Удаление ненужных аргументов
  • Python: необязательные аргументы argparse без тире
  • Как обрабатывать подкоманды CLI с помощью argparse
  • Python - лучший язык программирования в мире.