tgoop.com/BookPython/3252
Create:
Last Update:
Last Update:
Расскажите про области видимости переменных в Python
В Python область видимости переменной определяет, где эта переменная доступна для использования. Существуют несколько уровней областей видимости, которые можно описать через аббревиатуру LEGB:
1. Local (локальная область):
- Это переменные, определённые внутри функции. Они доступны только в пределах этой функции.
- Пример:
def my_function():
x = 10 # локальная переменная
print(x)
my_function() # выведет 10
# print(x) # ошибка, переменная x не существует за пределами функции
2. Enclosing (охватывающая область):
- Переменные, определённые в функциях внешнего уровня по отношению к вложенным функциям. Эти переменные доступны вложенным функциям.
- Пример:
def outer_function():
x = 5
def inner_function():
print(x) # доступ к переменной из охватывающей области
inner_function()
outer_function() # выведет 5
3. Global (глобальная область):
- Это переменные, определённые на уровне модуля, вне каких-либо функций. Они доступны во всём модуле.
- Чтобы изменить глобальную переменную внутри функции, нужно использовать ключевое слово
global
.- Пример:
x = 20 # глобальная переменная
def my_function():
global x
x = 10 # изменение глобальной переменной
my_function()
print(x) # выведет 10
4. Built-in (встроенная область):
- Это встроенные в Python функции и имена, такие как
len()
, sum()
, print()
и другие. Эти имена доступны в любой точке программы.- Пример:
print(len([1, 2, 3])) # использует встроенную функцию len
Правила поиска переменной (LEGB)
Когда вы обращаетесь к переменной, Python ищет её значение в следующем порядке:
1. Local: Ищет в локальной области.
2. Enclosing: Ищет в охватывающей области, если функция вложена.
3. Global: Ищет среди глобальных переменных модуля.
4. Built-in: Ищет среди встроенных имён.
Таким образом, Python будет использовать ближайшую переменную в соответствии с этим порядком.
👉@BookPython
BY Библиотека Python разработчика | Книги по питону
Share with your friend now:
tgoop.com/BookPython/3252