- 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.
globalaçar sözünü istifadə edərək, funksiyanın daxilində qlobal dəyişəni dəyişdirən bir proqram yazın.nonlocalaç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.