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.