Введение в Scope в Python

Область действия определяет доступность объекта python. Чтобы получить доступ к конкретной переменной в коде, область действия должна быть определена, поскольку к ней нельзя получить доступ из любой точки программы. Конкретная область кодирования, где видны переменные, называется областью действия. Переменные не видны всему коду, его видимость может быть ограничена. Область действия проверяет, какая переменная может быть «увидена». Область действия определяет набор правил, которые сообщают нам, как и где можно искать переменную. Переменная ищется либо для получения значения, либо для присвоения значения. Пространство имен - это уникальная идентификация переменной или метода. Пространство имен сообщает интерпретатору python имя объекта и местоположение, откуда он пытается получить к нему доступ.

В пространствах имен выполняется поиск разрешения области в соответствии с правилом LEGB. LEGB означает: L: локальный, E: закрытый, G: глобальный, B: встроенный. Последовательность LEGB важна. Переменная сначала ищется в Local, затем в Enclosed, затем в глобальной и, наконец, встроенной.

Типы Области применения в Python

Давайте изучим, как объявить переменную и как получить доступ к ее области действия:

1. Локальная сфера

Переменные, которые определены в функции, являются локальной областью действия переменной. Эти переменные определены в теле функции. Давайте разберемся с этой концепцией на примере. В этом примере 1 мы взяли одну переменную num. Num = 0 определяется вне функции, поэтому он не является локальной переменной. Согласно нашему определению, переменные, которые объявлены внутри тела функции, являются локальной переменной. Здесь num = 1 - локальная переменная, которая объявлена ​​и напечатана внутри демонстрационной функции. Если мы запустим этот код, вывод будет приведен ниже.

Пример № 1:

Код:

num=0
def demo():
#print(num)
num=1
print("The Number is:", num)
demo()

Выход:

Num является локальным для функции. Когда мы используем значение переменной num в функции перед ее локальным объявлением, возникает ошибка.

См. Пример 2. Здесь первый оператор print вызывает ошибку Python, поскольку мы пытаемся получить к нему доступ перед присваиванием.

Пример № 2:

Код:

num=0
def demo():
print(num) //Raises an Error
num=1
print("The Number is:", num)
demo()

Выход:

2. Глобальная сфера

Переменная, которую можно прочитать из любого места в программе, называется глобальной областью действия. Эти переменные могут быть доступны внутри и снаружи функции. Когда мы хотим использовать ту же переменную в остальной части программы, мы объявляем ее глобальной.

В следующем примере 1 мы объявили переменную Str, которая находится вне функции. Вызывается функция demo, которая печатает значение переменной Str. Чтобы использовать глобальную переменную внутри функции, нет необходимости использовать ключевое слово global.

Пример № 1:

Код:

def demo():
print(Str)
# Global
Str = "You are clever"
demo()

Выход:

В следующем примере 2 мы попытались изменить значение глобальной переменной Str внутри функции, поэтому она вызвала исключение. Если мы изменим или присвоим новое значение переменной внутри функции, тогда мы должны написать global. Если вы хотите сообщить интерпретатору python, что хотите использовать глобальную переменную, тогда используется ключевое слово «global». Если он не был объявлен как глобальный, тогда python рассматривает эту переменную как локальную, если она создается или изменяется внутри функции. В этой первой строке выдается исключение, потому что python предполагает, что мы хотим присваивать как локальную переменную из-за присваивания str внутри функции demo ().

Пример № 2:

Код:

def demo():
print(Str)
Str = "You are smart"
print(Str)
# Global scope
Str = "You are Clever"
demo()
print(Str)

Выход:

Когда мы хотим изменить значение глобальной переменной внутри функции, используется ключевое слово global.

В следующем примере 3 решена проблема, с которой мы столкнулись выше.

Пример № 3:

Код:

def demo():
global Str
print(Str)
Str = "You are smart"
print(Str)
# Global scope
Str = "You are Clever"
demo()
print(Str)

Выход:

3. Нелокальный или вмещающий объем

Нелокальная переменная - это переменная, определенная во вложенной функции. Это означает, что переменная не может быть ни в локальной области, ни в глобальной области. Для создания нелокальной переменной используется нелокальное ключевое слово. В следующем коде мы создали внешнюю функцию, и есть вложенная функция inner (). В объеме функции external () определена функция inner (). Если мы изменим нелокальную переменную так, как она определена в функции inner (), то изменения также будут отражены во внешней функции.

Пример № 1:

Код:

def func_outer():
x = "local"
def func_inner():
nonlocal x
x = "nonlocal"
print("inner:", x)
func_inner()
print("outer:", x)
func_outer()

Выход:

Если мы просто хотим использовать значение внешней функции и не хотим вносить какие-либо изменения, тогда закомментируйте (нелокальную а) строку.

Пример № 2:

Код:

def func_outer():
a = "local"
def func_inner():
#nonlocal a
a = "nonlocal"
print("inner:", a)
func_inner()
print("outer:", a)
func_outer()

Выход:

4. Встроенная сфера

Если переменная не определена в локальной, закрытой или глобальной области видимости, то python ищет ее во встроенной области видимости. В следующем примере импортируется 1 из математического модуля pi, а значение pi не определяется в глобальном, локальном и вложенном виде. Затем Python ищет значение pi во встроенной области видимости и печатает значение. Следовательно, имя, которое уже присутствует во встроенной области видимости, не должно использоваться в качестве идентификатора.

Пример № 1:

Код:

# Built-in Scope
from math import pi
# pi = 'Not defined in global pi'
def func_outer():
# pi = 'Not defined in outer pi'
def inner():
# pi = 'not defined in inner pi'
print(pi)
inner()
func_outer()

Выход:

Вывод - Область применения в Python

В этой статье мы узнали о области действия переменной python. Мы изучили четыре типа области действия: глобальную область, локальную область, вложенную область и встроенную область. Мы также узнали, когда использовать глобальные и нелокальные ключевые слова. Я надеюсь, что вы поняли эту концепцию.

Рекомендуемая статья

Это руководство по Scope в Python. Здесь мы обсуждаем типы Scope в Python и его примерах, а также реализацию и вывод кода. Вы также можете просмотреть другие наши статьи, чтобы узнать больше -

  1. Кортежи в Python с типами
  2. Обзор инкапсуляции в Python
  3. Альтернативы Python | Топ 6
  4. Введение в Наследование в Python