Python Argparse, как ссылаться на аргументы по имени

Это вопрос про argparse в python, это наверное очень просто

import argparse

parser=argparse.ArgumentParser()

parser.add_argument('--lib')

args = parser.parse_known_args()

if args.lib == 'lib':
    print 'aa'

это будет работать, но вместо вызова args.lib, я хочу сказать только "lib" (я не хочу набирать больше), есть ли способ экспортировать все переменные args из модуля (т.е. изменить область видимости). так что я могу напрямую проверить значение lib, не указывая имя модуля на передней панели

PS: у меня много переменных, я не хочу переназначать каждую

3 ответа

Решение

Во-первых, я собираюсь рекомендовать использовать args спецификатор. Это очень ясно, где lib идет от. Тем не менее, если вы обнаружите, что часто ссылаетесь на аргумент, вы можете присвоить его более короткому имени:

lib = args.lib

Есть способ выгрузить все атрибуты в глобальное пространство имен одновременно, но он не будет работать для локального пространства имен функции, и используя globals без очень веской причины плохая идея. Я бы не стал экономить несколько экземпляров args. быть достаточно веской причиной. Тем не менее, вот оно:

globals().update(args.__dict__)

Конечно, просто добавьте строку, которая назначает args.lib в lib,

import argparse

parser=argparse.ArgumentParser()    
parser.add_argument('-lib')    
args = parser.parse_known_args()

lib = args.lib 

if lib == 'lib':
    print 'aa'

Грубо... но только потому, что вы можете не значит, что вы должны... но только для ног globals().update(dict(args._get_kwargs()))

Другие вопросы по тегам