Domanda

Sto usando argparse in Python per argomenti della riga di comando di parsing:

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

Ora voglio fare alcuni calcoli con a, b e c. Tuttavia, lo trovo noioso args.a + args.b + args.c scrivere tutto il tempo.

Quindi, sto estraendo quelle variabili:

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

Tale che posso scrivere a + b + c.

C'è un modo più elegante di fare questo?

estrazione manuale diventa molto noioso e soggetto ad errori quando si aggiunge più argomenti.

È stato utile?

Soluzione

Se li volete come globali, si può fare:

globals().update(vars(args))

Se siete in una funzione e li vuole come variabili locali di tale funzione, si può fare questo in Python 2.x come segue:

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.

Questo trucco non funziona in Python 3, dove exec non è una dichiarazione, né probabilmente in altre varianti, come Python Jython o IronPython.

Nel complesso, però, mi sento di raccomandare semplicemente utilizzando un nome più breve per l'oggetto args, o utilizzare il clipboard. : -)

Altri suggerimenti

È possibile aggiungere le cose al ambito locale chiamando locals(). Esso restituisce un dizionario che rappresenta l'ambito attualmente disponibili. È possibile assegnare valori ad esso pure -. locals()['a'] = 12 si tradurrà in a essere in ambito locale con un valore di 12

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top