TL; DR: Chcę locals(), który wygląda w zawierający zakres.Python locals() dla zawierający zakres
Witam wszystkich.
Uczę kurs programowania w języku Python dla niektórych przyjaciół chemików i chcę mieć pewność, że naprawdę rozumiem zakres.
Rozważmy:
def a():
x = 1
def b():
print(locals())
print(globals())
b()
Miejscowi drukuje pustą środowiska i globalne drukuje zwykle globalnych. Jak uzyskać dostęp do środowiska, w którym zapisano x? Oczywiście tłumacz o tym wie, bo mogę się do niego odnieść.
Powiązane: Kiedy ma miejsce ustalanie zakresu? Poniższe nameErrors na a = x + 2 tylko wtedy, gdy x = 3 jest wliczone:
def a():
x = 1
def b():
a = x+2
x = 3
b()
Jeśli wykomentuj x = 3, kod działa. Czy to oznacza, że pyton sprawia, że leksykalny zakres przechodzi przez kod, zanim go zinterpretuje?
Czy potrzebujesz listy? ponieważ możesz po prostu drukować x po wydrukowaniu globali. EDYCJA: zapomnij powiedzieć, jeśli masz dostęp do x z print x, to także locals() wypełnione x: 1. –
możliwy duplikat [Uzyskaj locals z wywoływania przestrzeni nazw w Pythonie] (http://stackoverflow.com/questions/6618795/get-locals-from-calling-namespace-in-python) – piokuc