6.1 Dəyişənlər — bunlar istinadlardır
Python-da dəyişənlər obyektlərə istinaddır, özü dəyişəni deyil. Bu o deməkdir ki, Python-də dəyişən yaratdıqda sadəcə yaddaşdakı obyektə bir istinad yaradırsınız.
Bu xüsusiyyət dəyişənlərlə işləmək, xüsusilə obyektləri funksiyalara ötürmə və ya onları digər dəyişənlərə təyin edərkən əhəmiyyətli nəticələr yaradır.
Bir dəyişən yaradıb ona bir dəyər təyin etdikdə, Python bu dəyər üçün yaddaşda obyekt yaradır və dəyişəni həmin obyektə bir istinad halına gətirir. Əgər bir dəyişəni digərinə təyin etsəniz, yeni dəyişən ilkin dəyişənlə eyni obyektə istinad edəcək. Bu o deməkdir ki, əgər obyekt dəyişdiriləbiləndirsə, bir dəyişən üzərində edilən dəyişikliklər digərində də əks olunacaq.
Nümunə:
a = [1, 2, 3]
b = a
b.append(4)
print(a) # Çıxış: [1, 2, 3, 4]
Biz 4
rəqəmini b
dəyişəninə əlavə etdik, amma o həm də a
dəyişənindəki siyahıya əlavə olundu, çünki əslində hər iki dəyişən — bunlar sadəcə [1, 2, 3] siyahısı obyektinə istinadlardır.
6.2 Dəyişməz obyektlər
Python-da obyektlər dəyişən və dəyişməz olaraq bölünür. Dəyişən obyektlər, məsələn, siyahılar və lüğətlər, yaradıldıqdan sonra dəyişdirilə bilər.
Dəyişməz obyektlər, məsələn, sətirlər və ədədlər, yaradıldıqdan sonra dəyişdirilə bilməz. Dəyişməz obyektlərlə işləyərkən, dəyişikliklər yeni obyektin yaradılmasına səbəb olur:
Təyin etmək heç vaxt obyektləri dəyişdirmir:
a = 5 # a 5 obyektinə istinadı saxlayır
b = a # b də 5 obyektinə istinadı saxlayır
b = 3 # indi b 3 obyektinə istinadı saxlayır
print(a) # Çap edəcək: 5
Obyektin funksiyasını çağıraraq obyekt dəyişdirilə bilər:
a = [1, 2, 3]
b = a
b.append(4)
print(a) # Çap edəcək: [1, 2, 3, 4]
Amma elə dəyişməz obyektlər də var ki, onlarda funksiyalar mövcuddur. Bu funksiyalar başlanğıc obyektləri dəyişdirmir, lakin yeni nəticəni ehtiva edən yeni obyekt qaytarır:
name = "Alex"
print(name) # Çap edəcək: Alex
name2 = name.lower()
print(name2) # Çap edəcək: alex
Sətirlər — dəyişməz obyektlərdir. Hətta onlarda metodlar olsa belə, bu metodlar heç vaxt sətir obyektini dəyişmir — əvəzində hər zaman yeni sətir (yeni obyekt) qaytarırlar. Köhnə obyekt isə olduğu kimi qalır.
6.3 None tipi ilə iş
Python-da xüsusi bir data tipi var ki, dəyərin olmamasını ifadə edir — None
. Bu, boş dəyişənləri göstərmək üçün və ya heç bir dəyər qaytarmayan funksiyaların nəticəsi kimi istifadə olunur. None tipini anlamaq proqramın davranışını idarə etmək üçün vacibdir, xüsusilə də conditional operatorlar və data ilə iş zamanı.
None istifadəsinin əsasları
None
NoneType
sinfinin tək nümunəsidir. Bu, dəyişənin heç bir dəyəri olmadığını göstərmək üçün istifadə olunur. Şərtlərdə None
yalan (False
) kimi qiymətləndirilir.
a = None
if a:
print("a doğru (True) dəyərə sahibdir")
else:
print("a ya None, ya da yalandır (False)")
None ilə müqayisə
Dəyişəni None ilə yoxlamaq üçün is operatorundan
istifadə edilməlidir, == yox. is
operatoru identiklik yoxlayır, dəyər bərabərliyini yox, ona görə də bu halda istifadə olunmalıdır.
a = None
if a is None:
print("a None-dir")
else:
print("a dəyərə sahibdir")
Funksiyalarda None
None
tez-tez birbaşa dəyər qaytarmayan funksiyalarda istifadə olunur. Əgər funksiya heç bir dəyər qaytarmırsa, avtomatik olaraq None
qaytarır.
def func():
print("Bu funksiya None qaytarır")
result = func()
print(result) # Nəticə: None olacaq
None və listlər
None
listlərdə, tuple-larda və ya digər kolleksiyalarda müəyyən bir yerdə elementin olmadığını göstərmək üçün istifadə olunabilir.
my_list = [1, None, 3]
print(my_list) # Nəticə: [1, None, 3] olacaq
GO TO FULL VERSION