Python’da Atama İfadeleri
Aritmatiksel, İlişkisel, Mantıksal, Bit Düzeyide İşlem, Öteleme ve Bit Düzeyinde Atama ve Cast operatörleri olarak ayırabiliriz.
Aritmatiksel Atama Operatörleri
= operatörünün atama amacı ile kullanıldığını biliyoruz.
Sembolün sol taraftaki operand bir sol taraf operandı (left hand operand, Lvalue) olmalıdır. Sol taraftaki operand (değişken, dizi elemanı, yapı elemanı vb) sağ taraftaki operandın değerini bellekte saklar.
Operatör | Sembol | Kullanışı | İşlem Sonucu |
---|---|---|---|
Atama | = | x=y | y’nin değerini x’e atar |
Topla ve ata | += | x+=y | x+y’nin değerini x’e atar |
Çıkar ve ata | -= | x-=y | x-y’nin değerini x’e atar |
Çarp ve ata | *= | x*=y | x*y’nin değerini x’e atar |
Böl ve ata | /= veya //= | x/=y veya x//=y | x/y ‘nin değerinix’e atar |
Kalanı ata | %= | x%=y | x%y’nin değerini x’e atar |
>>> x=6
>>> x+=2
>>> y=3
>>> y-=3
>>> z=4
>>> z*=5
>>> k=3
>>> k%=2
>>> print("x=",x)
x= 8
>>> print("y=",y)
y= 0
>>> print("z=",z)
z= 20
>>> print("k=", k)
k= 1
>>> u=12
>>> u/=3
>>> print("u=",u)
u= 4.0
>>> l=6
>>> l//=2
>>> print("l=",l)
l= 3
>>>
İlişkisel Operatörler
Operatör | Sembol | Kullanış | İşlem Sonucu |
---|---|---|---|
Büyüktür | > | a > b | a, b’den büyükse sonuç true aksi taktirde false dönecektir. |
Küçüktür | < | a < b | a, b’den küçükse sonuç true aksi taktirde false dönecektir. |
Büyük veya eşit | >= | a >= b | a, b’den büyük veya b’ye eşitse sonuç true aksi taktirde false dönecektir. |
Küçük veya eşit | <= | a <= b | a, b’den küçük veya b’ye eşitse sonuç true aksi taktirde false dönecektir. |
Eşittir | == | a == b | a, b’ye eşitse sonuç true aksi taktirde false dönecektir. |
Eşit değildir | != | a != b | a, b’ye eşit değilse sonuç true aksi taktirde false dönecektir. |
>>> x=3
>>> y=4
>>> z=4
>>> m=6
>>> x<y
True
>>> x==y
False
>>> x==x
True
>>> m>=z
True
>>> x!=x
False
>>> c=x>y
>>> print(c)
False
Ayrıca şu bilgiyi unutmayalım. true değeri sayısal değer olarak 1, false değeri 0 olarak kullanılabilir.
>>> t=5
>>> print(t+c)
5
Burada c’nin değeri 0 (false) olduğu için 5+0=6 sonucu bulunmuştur.
IS ve IS NOT İfadeleri
Python’da is eşittir, is not eşit değildir anlamında kullanılır. Bir nevi eşitlik oeratörünün psöydo ifadesidir.
>>> x=18
>>> y=47
>>> x is x
True
>>> x is y
False
>>> x is not x
False
>>> x is not y
True
Mantıksal Operatörler
Python’da 3 adte mantıksal operatör kullanılır. Bunlar and, or ve not’dır.
Lojik and (ve) işlemi
>>> True and True
True
>>> True and False
False
>>> False and True
False
>>> False and False
False
Lojik or (veya) işlemi
>>> True or True
True
>>> True or False
True
>>> False or True
True
>>> False or False
False
Lojik not (değil) işlemi, diğerlerinde farklı olarak true veya false değerin önüne geldi.
>>> not False
True
>>> not True
False
Bit Düzeyinde İşlem Gören Operatörler
Bu operatör sayesinde bir veri yapısı içindeki belirli Bit’lere erişmek ve farklı veriler arasında Bit’ler mertebesinde karmaşıklaştırmalar yapmak mümkündür.
Operatör | Sembol | Kullanışı | İşlem Sonucu |
---|---|---|---|
Sağa öteleme | >> | a >> b | a’nın bitleri sağa doğru b kadar ötelenir. |
Sola öteleme | << | a << b | a’nın bitleri sola doğru b kadar ötelenir. |
Bit düzeyinde AND | & | a & b | a ve b’nin karşılıklı bit’leri arasında AND işlemi uygulanır. |
Bit düzeyinde OR | | | a | b | a ve b’nin karşılıklı bit’leri arasıdna OR işlemi u ygulanır. |
Bit düzeyinde exclusive OR (XOR) | ^ | a ^ b | a ve b’nin karşılıklı bit’leri arasında XOR işlemi uygulanır. |
Bit düzeyinde tamamlayıcı (complement) | ~ | ~a | a’nın bitlerini tersine çevirir (1’ler 0, 0’lar 1 olur. |
>>> a=2
>>> b=8
>>> a&b
0
Yukarıdaki örnekte a iki sistemde 0010 ve b ikili sistemde 1000 şeklinde temsil edilir.
0&1=0
0&0=0
1&0=0
şeklinde elde edileceği için sonuç 0 sayısıdır.
>>> 13&25
9
>>> 214|112
246
13 ile 25 iki sayı sisteminde 13=00001101, 25=00011001 şeklinde ifade edilir. 0&1=0, 1&0=0, 0&0=0 ve 1&1=1 kuralına göre 00001001 ondalık sistemdeki karşılığı ise 9 a eşittir.
Aynı şekilde 214=11010110 ile 112=01110000 şeklinde temsil edilir. | (OR) işleminde, 1|1=1, 1|0=1, 0|1=1 ve 0|0=0 şeklinde belirlendiğinden, 11110110 sonucu bulunur ki bu da onluk sistemdeki 246 sayısına denktir.
Aşağıda bit düzeyinde exclusive OR (XOR) operatörü ile ilişkli örnek vardır.
>>> hex(8644)
'0x21c4'
>>> hex(4643)
'0x1223'
>>> 8644^4643
13287
>>> hex(13287)
'0x33e7'
Bit düzeyinde tamamlama (complement) operatörü ise verinin bitlerini tersine çevirmekte yani 1’leri 0, 0 ları 1 yapmaktadır.
Bitler üzerinde işlem yapabilen operatörler yardımı ile bir datanın belirli bir bitine ya da bit grubuna erişmeyi sağlayan maskeleme adı verilen bir programlama tekniğiyle uygulanabilir.Bu teknik özellikle veri sıkıştırma ve indeks oluşturma uygulamalarında sık rastlamaktayız.
>>> b=46
>>> ~b
-47
>>> k=64
>>> ~k
-65
b 46 ise ~b -46-1=-47 olarak elde edilmiştir.
Öteleme Operatörleri
Öteleme operatörlerinde kullanılacak olan operandların int türünde olması gerekir. int türde değilse otomatik olarak int türe dönüştürülür.
6 << 2 işlemi uygulanırsa, 6 sayısının bitleri 2’şer kaydırılarak 24 sayısına dönüşür.
00000000 00000110
00000000 00011000
314 >> 3 işlemi uygulanırsa sonuç 39 sayısına dönüşür.
00000000 00111010
00000000 00100111
>>> 5>>1
2
>>> 5<<2
20
Sola doğru öteleme, ötelemenin uygulandığı sayıyı 2’nin kuvveti ile çarpmakla eşdeğerdir.
a<<b ifadesi a*2b ifadesine eşittir.
Negatif olmayan sayılarda, sağa öteleme ise, 2’nin kuvvetine bölmeye eşittir.
a>>b ifadesi ile a/2b ifadesine eşittir.
Bit Düzeyinde Atama Operatörleri
Operatör | Sembol | Kullanışı | İşlem Sonucu |
---|---|---|---|
Sağa öteleme – atama | >>= | x>>=y | x>>y yi x’e atar. |
Sola öteleme – atama | <<= | x<<=y | x<<y yi x’e atar. |
AND işlemi – atama | &= | x&=y | x&y yi x’e atar. |
OR işlemi – atama | |= | x|=y | x|y yi x’e atar. |
XOR işlemi – atama | ^= | x^=y | x^y yi x’e atar. |
Bu operatörler, aritmatiksel atama operatörleri ile tamamen benzerlik gösterirler.
>>> x=4
>>> y=5
>>> x<<=y
>>> x
128
>>> x=4
>>> y=5
>>> x=x<<y
>>> x
128
Cast Operatörü
Daha önceki bloglarımda da anlatıldığı gibi bu operatör yardımı ile bir ifadenin türü, belirtilen tipe dönüştürülür. Örneğin, 5/2 ifadesinin sonucunun her iki operandın da int türünde olmasından ötürü 2 olacağını biliyoruz. Oysa, float 5/2 sonucu 2.5 olacaktır. Burada cast operatörünün önceliğinin aritmetik işlemlerden daha yüksek olduğunu hatırlarsak bu ifadenin ((float)5)/2 şeklinde yorumlanacağını anlayabiliriz.