Biorąc pod uwagę następujący kod:Python zmienna rozwiązywania
a = 0
def foo():
# global a
a += 1
foo()
Po uruchomieniu Python narzeka: UnboundLocalError: zmiennej lokalnej 'a' odwołuje przed cesją
Jednak kiedy jest słownikiem ...
a = {}
def foo():
a['bar'] = 0
foo()
Wszystko działa dobrze ...
Ktoś wie, dlaczego możemy podać a w drugiej części kodu, ale nie pierwszej?
Zastanawiam się, dlaczego zdecydowali się opisać to jako "specjalne dziwactwo"? Porównaj z javascript gdzie 'a = 1' automatycznie przypisuje globalny zasięg! Jedyną dobrą rzeczą jest to, że szybko rozpoznajesz kod śmieci przez nieobecności 'var a = 1' – aaronasterling