W Pythonie zmienne mogą mieć zakres lokalny, nielokalny, globalny, wbudowany.
Żeby uzyskać dostęp do określonej zmiennej w kodzie, należy zdefiniować jej zakres, ponieważ nie można uzyskać dostępu do zmiennej z dowolnego miejsca w programie.
Zakres określa zestaw reguł, które mówią nam, jak i gdzie można wyszukiwać zmienną.
1. Zakres lokalny
Zakres lokalny - określa zmienną zdefiniowaną wewnątrz ciała funkcji i może być używane tylko wewnątrz tej funkcji.
Przykład:
x=2
def fun():
x=4
print(x)
fun()
4 #wynik, zmienna tylko funkcji fun();
print(x)
2 #wynik, zmienna globalna, spoza funkcji;
2. Zakres nielokalny
Zakres nielokalny - określa zmienną zdefiniowaną w funkcji zagnieżdżonej. Oznacza to, że zmienna nie może być ani w zasięgu lokalnym, ani w zasięgu globalnym.
Przykład:
def fun(a):
print(a)
def fun_1():
x=2
return x
print(a+fun_1())
fun(2)
2
4
print(x)
#BŁĄD, zmienna 'x' jest zdefiniowana dla funkcji zagnieżdżonej fun_1(), i jest zmienną nielokalną.
3. Zakres globalny
Zakres globalny określa zmienną, którą można odczytać z dowolnego miejsca w programie.
Dostęp do takiej zmiennej można uzyskać wewnątrz i na zewnątrz funkcji.
Przykład:
x=10
def fun(y):
print(x+y)
print(x)
print(y)
fun(5)
15 #wynik, 'x' jest zmienną globalną;
10 #wynik, 'x' jest zmienną globalną;
5 #wynik
4. Zakres wbudowany
Zakres wbudowany określa zmienną wbudowaną w moduł. Ta zmienna nie jest zmienną lokalną, nielokalną oraz globalną.
Jeśli zmienna nie jest zdefiniowana w zakresie lokalnym, nielokalnym lub globalnym, python szuka jej we wbudowanym zakresie.
Przykład, wydrukowanie zmiennej 'pi' z modułu 'math'
from math import pi
print(pi)
3.141592653589793 #wydruk wbudowanej zmiennej 'pi' z modułu 'math'
def fun():
print(pi)
fun()
3.141592653589793 #wydruk wbudowanej zmiennej 'pi' z modułu 'math'