W wielu zasobach stwierdziłem, że „zakres” i „przestrzenie nazw” są używane zamiennie, co wydaje się nieco mylące, ponieważ oznaczają różne rzeczy.
- Zakres określa region kodu, w którym dostępna jest nazwa.
- Reguła LEGB określa sposób wyszukiwania nazw.
- Przestrzeń nazw to miejsce, w którym wyszukujesz nazwiska.
Potem czytam:
- „nazwy są powiązane z przestrzenią nazw zgodnie z miejscem, w którym zostały przypisane ...” (moim zdaniem dotyczy to zakresów w zakresie leksykalnym).
- „funkcje dodają dodatkową warstwę przestrzeni nazw do twoich programów” [ ref. ] (czy nie dodają dodatkowego zasięgu lokalnego?)
- „wszystkie nazwy przypisane w definicji funkcji są umieszczane w zasięgu lokalnym (przestrzeń nazw powiązana z wywołaniem funkcji).”
- „zakres globalny - czyli przestrzeń nazw, w której zmienne utworzone (przypisane) na najwyższym poziomie pliku modułu są aktywne”.
* wszystkie cytaty pochodzą z nauki Pythona 5. edycja ch17
Czy przestrzenie nazw w Pythonie są zaimplementowane w zakresach? Czy to to samo? Czy ktoś może mnie oświecić?