Python: Extrae variables del espacio de nombres

Estoy usando argparse en Python para analizar los argumentos de la línea de comandos:

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

Ahora quiero hacer algunos cálculos con a , b , y c . Sin embargo, me resulta tedioso escribir args.a + args.b + args.c todo el tiempo.

Por lo tanto, estoy extrayendo esas variables:

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

Tal que puedo escribir a + b + c .

¿Hay una manera más elegante de hacer eso?

    La extracción manual se vuelve muy tediosa y propensa a errores al agregar muchos argumentos.

    Si los quieres como globales, puedes hacer:

     globals().update(vars(args)) 

    Si estás en una función y quieres que sean como variables locales de esa función, puedes hacerlo en Python 2.x de la siguiente manera:

     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. 

    Este truco no funciona en Python 3, donde exec no es una statement, ni es probable en otras variantes de Python como Jython o IronPython.

    Sin embargo, en general, recomendaría usar un nombre más corto para el objeto args o usar el portapapeles. 🙂

    Puede agregar elementos al ámbito local llamando a locals() . Devuelve un diccionario que representa el scope actualmente disponible. También puede asignarle valores: locals()['a'] = 12 resultará en a ser en el ámbito local con un valor de 12.