- Типы областей видимости:
- Локальная (
Local, L): Внутри текущей функции или блока. Переменные, созданные здесь, доступны только внутри.def my_func(): a = 10 # Локальная переменная print(a) - Объемлющая (
Enclosing function locals, E): Локальная область видимости для вложенных функций. Позволяет внутренней функции видеть переменные внешней функции.def outer_function(): x = "внешняя" # Переменная объемлющей области для inner_function def inner_function(): print(x) # Доступ к x из объемлющей области inner_function() - Глобальная (
Global, G): На верхнем уровне модуля (файла.py). Переменные, определенные здесь, доступны из любого места модуля.global_var = "Я глобальная" def some_func(): print(global_var) # Доступ к глобальной переменной - Встроенная (
Built-in, B): Содержит имена, встроенные в Python (len,print,int,True,None, исключения и т.д.). Всегда доступна.- Посмотреть имена:
print(dir(__builtins__))
- Посмотреть имена:
- Локальная (
- Изменение переменных:
global: Ключевое слово используется внутри функции, чтобы указать, что присваивание значения должно изменить глобальную переменную, а не создавать новую локальную.s = "Глобальное значение" def change_global(): global s # Указываем, что работаем с глобальной s s = "Измененное значение" print("Внутри функции:", s) change_global() print("Снаружи функции:", s) # Вывод: # Внутри функции: Измененное значение # Снаружи функции: Измененное значениеnonlocal: Ключевое слово используется во вложенной функции, чтобы указать, что присваивание значения должно изменить переменную в объемлющей (не глобальной!) области видимости.def outer(): x = 5 def inner(): nonlocal x # Указываем, что работаем с x из outer x += 1 print('Внутри inner_function:', x) inner() print('Внутри outer_function:', x) outer() # Вывод: # Внутри inner_function: 6 # Внутри outer_function: 6- Правило LEGB (GLEB): Порядок поиска имен Python:
Local→Enclosing→Global→Built-in. Python ищет имя по этому пути и использует первое найденное совпадение.
〰〰〰 𓆝 𓆟 𓆞 𓆝 𓆟 𓆝 𓆟 𓆞 〰〰〰