2.2. Değişkenler ve temel tipler¶
Bir değişken, = operatörüyle bir değere bağladığınız bir addır. Atamadan sonra ad, değerin kullanılabileceği her yerde kullanılabilir:
width = 320
height = 240
pixels = width * height
print(pixels) # prints 76800
Önce = işaretinin sağ tarafı değerlendirilir, ardından sonuç soldaki ada bağlanır. Hiç atanmamış bir adı okumak NameError hatası verir.
Bir değişken yalnızca bir etikettir. Bir değere işaret eder – değer başka bir yerde bulunur ve aynı değerin herhangi bir sayıda etiketi olabilir.
Değişkenler değerlere işaret eden etiketlerdir. Bir değişkeni yeniden atamak etiketi taşır; etiketin daha önce işaret ettiği değeri değiştirmez.¶
2.2.1. Adlandırma kuralları¶
Adlar bir harf veya alt çizgi ile başlar ve harfler, rakamlar ve alt çizgiler içerebilir.
frame_countve_internaluygundur;1st_frameise bir sözdizimi hatasıdır.Adlar büyük/küçük harfe duyarlıdır:
Widthvewidthiki farklı değişkendir.list,str,id()veyaprint()gibi yerleşik adları yeniden kullanmaktan kaçının – bunları gölgelemek bir hata vermez, ancak özgün yerleşik öğe betiğin geri kalanı için erişilemez hale gelir.Yaygın kullanım: değişkenler ve fonksiyonlar için
snake_case, değiştirmeyi düşünmediğiniz sabitler içinALL_CAPS, sınıf adları içinCamelCase.
2.2.2. Temel tipler¶
Python’daki her değerin, hangi işlemleri desteklediğini belirleyen bir tipi vardır. En çok yazacağınız dört tip şunlardır:
int – pozitif veya negatif tam sayılar. MicroPython tam sayıları bellek izin verdiği kadar büyür. Sabitler düz rakamlar olarak yazılır:
0,42,-7. Onaltılık (0x1A), sekizlik (0o17) ve ikili (0b1010) sabitler de geçerlidir ve yazmaçlar ile bit maskeleri için kullanışlıdır.float – ondalık noktalı veya üslü sayılar:
3.14,1.0,-0.5,2e6(= 2.000.000,0). Kameradaki tüm float değerleri IEEE 754 32-bit’tir – yaklaşık yedi anlamlı basamağa kadar kesindir.bool –
TrueveyaFalseiki sabitinden biri (büyük harf kullanımına dikkat edin).str – tek veya çift tırnak arasındaki karakterler olarak yazılan metin:
"hello",'OpenMV'. Her iki tırnak stili de eşdeğerdir; dizge içinde geçen tırnak karakterlerini kaçırmaktan (escape) kurtulmanızı sağlayan hangisiyse onu seçin.
Hemen bilmeye değer beşinci bir değer daha vardır:
None –
NoneTypetipinin tek değeridir. “değer yok” veya “henüz ayarlanmadı” anlamında kullanılır. Açıkça bir şey döndürmeyen fonksiyonlar örtük olarakNonedöndürür.
2.2.3. Tipleri kontrol etme ve dönüştürme¶
Yerleşik type() fonksiyonu herhangi bir değerin tipini döndürür:
>>> type(42)
<class 'int'>
>>> type(3.14)
<class 'float'>
>>> type("hello")
<class 'str'>
Her tip aynı zamanda bir dönüştürme fonksiyonu görevi de görür. Ona farklı bir tipte bir değer verirseniz, dönüşüm iyi tanımlı olduğunda, yeni tipin eşdeğer değerini geri alırsınız:
>>> int("42")
42
>>> int(3.9)
3 # truncates toward zero, not rounds
>>> float("1.5")
1.5
>>> str(255)
'255'
>>> bool(0), bool(1), bool("")
(False, True, False)
İyi tanımlı olmayan dönüşümler ValueError hatası verir:
>>> int("hello")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid syntax for integer with base 10
2.2.4. Yeniden atama ve dinamik tipleme¶
Bir ad, herhangi bir zamanda herhangi bir tipteki bir değere yeniden atanabilir. Aşağıdaki kod geçerlidir:
x = 42
x = "now I'm a string"
x = 3.14
Python bir değişkeni bir tipe bağlamaz. x değerinin bir tam sayı olmasına bağlı olan kod, onu kullandığı noktada yalnızca bir tam sayı bekler; başka bir şey alırsa, çalışma zamanında bir TypeError alırsınız.
Not
x değişkenini yeniden atamak, eski bağlamanın işaret ettiği değeri değiştirmez. İki ad aynı değeri paylaşıyorsa, birini yeniden atamak diğerini etkilemez:
a = [1, 2, 3]
b = a # both point at the same list
a = "different now"
print(b) # still [1, 2, 3]
Paylaşılan bir değeri değiştirmek (mutate) farklıdır: list.append gibi bir metot, bağlamanın işaret ettiği değeri değiştirir, böylece aynı değere işaret eden diğer her ad bu değişikliği görür.