Używam argparse w Pythonie do analizowania argumentów wiersza poleceń:Python: Wyciąg zmiennych z przestrzeni nazw
parser = ArgumentParser()
parser.add_argument("--a")
parser.add_argument("--b")
parser.add_argument("--c")
args = parser.parse_args()
Teraz chcę zrobić kilka obliczeń z a
, b
i c
. Jednak uważam za nudne pisanie args.a + args.b + args.c
przez cały czas.
Dlatego jestem wydobywania tych zmiennych:
a, b, c = [args.a, args.b, args.c]
taka, że mogę napisać a + b + c
.
Czy istnieje bardziej elegancki sposób robienia tego?
Ręczne wyciąganie staje się bardzo uciążliwe i podatne na błędy podczas dodawania wielu argumentów.
Dzięki za odpowiedź. Działa, ale część 'exec '" 'wydaje się bardzo brzydkim hackerem. Dlaczego to konieczne? – Lemming
Korekta: Nie działa, jeśli funkcja zawiera funkcje zagnieżdżone. W tym przypadku pojawia się następujący komunikat o błędzie: 'exec" " Błąd składni: niekwalifikowany exec nie jest dozwolony w funkcji 'main' zawiera zagnieżdżoną funkcję z wolnymi zmiennymi' – Lemming
Ick. Nie wiedziałem o tym, ale ma to sens. Zamknięcia wymagają standardowego mechanizmu zmiennej lokalnej Pythona, który uzyskuje dostęp do loci po indeksie. Użycie instrukcji 'exec' w dowolnym miejscu w funkcji zmusza Pythona do użycia alternatywnej metody dostępu do lokali po nazwie, ponieważ' exec' może definiować lub modyfikować locals (dlatego też możesz aktualizować 'locals()' jeśli 'exec 'jest widoczne w funkcji, ale nie inaczej). – kindall