Пост канала
Когда в Python используется переменная, сначала она ищется в текущей области видимости. Если такая переменная не найдена, поиск продолжается во вложенной области. Это повторяется до тех пор, пока не будет достигнуто глобальное пространство имен. x = 1 def scope(): x = 2 def inner_scope(): print(x) # выводит 2 inner_scope() scope() Однако присваивание переменной работает иначе. Новая переменная всегда создается в текущей области видимости, если не указано global или nonlocal: x = 1 def scope(): x = 2 def inner_scope(): x = 3 print(x) # выводит 3 inner_scope() print(x) # выводит 2 scope() print(x) # выводит 1 global позволяет использовать переменные из глобального пространства имен, а nonlocal ищет переменную в ближайшей окружающей области видимости. Сравните: x = 1 def scope(): x = 2 def inner_scope(): global x x = 3 print(x) # выводит 3 inner_scope() print(x) # выводит 2 scope() print(x) # выводит 3 x = 1 def scope(): x = 2 def inner_scope(): nonlocal x x = 3 print(x) # выводит 3 inner_scope() print(x) # выводит 3 scope() print(x) # выводит 1 👉 @BookPython
Открыть в MAX- Просмотры
- 1 622
- ER
- 0,8%
- Реакции
- 13