- Python-da Sahəni Anlamaq
- LEGB Qaydası (Yerel, Enclosing, Qlobal, Daxili)
- Qlobal və Nonlocal Açar Sözləri
- Ad Məkanı və Dəyişənlərin Həlli
- Xülasə
- Tapşırıqlar
Sahə, dəyişənin kodun hansı bölgəsində əlçatan olduğunu göstərir. Python-da müxtəlif növ sahələr var: yerel, enclosing, qlobal və daxili. Sahəni anlamaq təmiz və səhvsiz kod yazmaq üçün vacibdir.
Funksiya daxilində təyin olunan dəyişənlər yerel sahədədir və yalnız həmin funksiyada əlçatandır.
def my_function():
x = 10 # Yerel sahə
print(x)
my_function()
print(x) # Bu, səhv verəcək, çünki x funksiyadan kənarda təyin olunmayıb
Çıxış:
10
NameError: name 'x' is not defined
İzah: x
dəyişəni my_function
funksiyası daxilində təyin olunub və funksiyadan kənarda əlçatan deyil.
LEGB qaydası, Python-un dəyişənləri axtarma sırasını müəyyən edir. Bu, Yerel, Enclosing, Qlobal və Daxili deməkdir.
Funksiya daxilində təyin olunan dəyişənlər.
def my_function():
x = 10 # Yerel sahə
print(x)
my_function()
Çıxış:
10
Enclosing funksiyaların yerel sahəsində olan dəyişənlər.
def outer_function():
x = 20 # Enclosing sahə
def inner_function():
print(x)
inner_function()
outer_function()
Çıxış:
20
Skriptin və ya modulun ən üst səviyyəsində təyin olunan dəyişənlər.
x = 30 # Qlobal sahə
def my_function():
print(x)
my_function()
print(x)
Çıxış:
30
30
Python-da əvvəlcədən təyin olunmuş adlar.
print(len("Hello")) # Daxili funksiya
Çıxış:
5
global
və nonlocal
açar sözləri müxtəlif sahələrdə dəyişənlərin davranışını dəyişdirmək üçün istifadə olunur.
global
açar sözü, funksiyanın daxilində qlobal dəyişəni dəyişdirməyə imkan verir.
x = 40
def my_function():
global x
x = 50
my_function()
print(x)
Çıxış:
50
İzah: global
açar sözü funksiyaya qlobal dəyişən x
-i dəyişdirməyə imkan verir.
nonlocal
açar sözü, enclosing sahədəki dəyişəni dəyişdirməyə imkan verir.
def outer_function():
x = 60
def inner_function():
nonlocal x
x = 70
inner_function()
print(x)
outer_function()
Çıxış:
70
İzah: nonlocal
açar sözü daxili funksiyaya enclosing sahədəki x
dəyişənini dəyişdirməyə imkan verir.
Ad məkanı, identifikatorların (dəyişən adlarının) və onların müvafiq obyektlərinin saxlandığı konteynerdir. Python, dəyişənləri və onların dəyərlərini izləmək üçün ad məkanlarından istifadə edir.
x = 80 # Qlobal ad məkanı
def my_function():
x = 90 # Yerel ad məkanı
print(x)
my_function()
print(x)
Çıxış:
90
80
İzah: Qlobal ad məkanında olan x
dəyişəni, funksiyanın yerel ad məkanında olan x
dəyişənindən fərqlidir.
Python, dəyişənləri LEGB qaydasına uyğun olaraq həll edir.
x = 100 # Qlobal sahə
def outer_function():
x = 110 # Enclosing sahə
def inner_function():
x = 120 # Yerel sahə
print(x)
inner_function()
outer_function()
Çıxış:
120
İzah: inner_function
funksiyasının yerel sahəsində olan x
dəyişəni istifadə olunur, çünki LEGB qaydasına görə ən yaxın sahədir.
Bu fəsildə, Python-da sahə və ad məkanını, LEGB qaydasını, global
və nonlocal
açar sözlərini və Python-un dəyişənləri necə həll etdiyini öyrəndik.
- Yerel, enclosing və qlobal sahələrin istifadəsini göstərən bir proqram yazın.
global
açar sözünü istifadə edərək, funksiyanın daxilində qlobal dəyişəni dəyişdirən bir proqram yazın.nonlocal
açar sözünü istifadə edərək, enclosing sahədəki dəyişəni dəyişdirən bir proqram yazın.- LEGB qaydasını istifadə edərək dəyişənlərin həllini göstərən bir proqram yazın.