Въведение в обхвата на Python

Обхватът определя достъпността на python обекта. За достъп до конкретната променлива в кода, обхватът трябва да бъде дефиниран, тъй като не може да бъде достъпен от никъде в програмата. Конкретният кодиращ регион, където променливите са видими, е известен като обхват. Променливите не са видими за целия код, неговата видимост може да бъде ограничена. Обхватът проверява коя променлива може да бъде „Seen“. Обхватът определя набора от правила, които ни казват как и къде може да се търси променлива. Търси се променливата или за извличане на стойност, или за присвояване на стойност. Пространството на имената е уникалната идентификация на променливата или метода. Пространството от имена казва на интерпретатора на python за името на обекта и местоположението, откъдето се опитва да получи достъп до него.

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

Видове обхват в Python

Нека да проучим как да декларираме променлива и как да получим достъп до нейния обхват:

1. Местен обхват

Променливите, които са дефинирани във функцията, са локален обхват на променливата. Тези променливи са дефинирани в функционалното тяло. Нека разберем тази концепция с помощта на пример. В този пример 1 сме взели едно променливо число. Num = 0 се дефинира извън функцията, така че не е локална променлива. Според нашата дефиниция променливите, които са декларирани във функционалното тяло, са локална променлива. Тук num = 1 е локална променлива, която се декларира и отпечатва във демонстрацията на функцията. Ако изпълним този код, изходът е даден по-долу.

Пример №1:

Код:

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

изход:

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

Референтен пример 2: Тук първото изявление за печат повдига грешка в python, тъй като ние се опитваме да получим достъп до него преди заданието.

Пример №2:

Код:

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

изход:

2. Глобален обхват

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

В следващия пример 1 сме декларирали променлива Str, която е извън функцията. Демонстрацията на функцията се извиква и отпечатва стойността на променлива Str. За да използвате глобална променлива във функция, няма нужда да използвате глобалната ключова дума.

Пример №1:

Код:

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

изход:

В следващия пример 2 Опитахме се да променим стойността на глобалната променлива Str във функцията, поради което тя повдигна изключение. Ако променим или присвоим нова стойност на променливата във функцията, тогава трябва да напишем глобално. Ако искате да кажете на интерпретатора на python, че искате да използвате глобална променлива, тогава се използва ключовата дума „global“. Ако тя не е декларирана като глобална, тогава python третира тази променлива като локална, ако е създадена или модифицирана във функцията. В този първи ред хвърляме изключение, защото python приема, че искаме присвояване като локална променлива поради присвояване на str вътре в демонстрацията на функция ().

Пример №2:

Код:

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

изход:

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

Следващият пример 3 реши проблема, който се среща по-горе.

Пример №3:

Код:

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

изход:

3. Нелокален или затварящ обхват

Нелокална променлива е променливата, която е дефинирана в вложената функция. Това означава, че променливата не може да бъде нито в локален, нито в глобален обхват. За създаване на нелокална променлива се използва нелокална ключова дума. В следния код създадохме външна функция и има вложена функция вътрешна (). В обхвата на външната () функция е дефинирана вътрешната () функция. Ако променим нелокалната променлива, както е дефинирана във функцията Internal (), промените се отразяват и във външната функция.

Пример №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. Вграден обхват

Ако променлива не е дефинирана в локален, затворен или глобален обхват, тогава питонът я търси във вградения обхват. В следващия пример 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. Научихме четири типа обхват - глобален обхват, локален обхват, приложен обхват и вграден обхват. Научихме се и кога да използваме глобални и нелокални ключови думи. Надявам се, че сте разбрали тази концепция.

Препоръчителен член

Това е ръководство за обхвата в Python. Тук обсъждаме видовете обхват в Python и неговите примери, заедно с внедряването и извеждането на кода. Можете също да прегледате и другите ни свързани статии, за да научите повече -

  1. Капаци в Python с видове
  2. Преглед на капсулирането в Python
  3. Алтернативи на Python | Топ 6
  4. Въведение в наследството в Python