Menu

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.

About Ragıp Ünal

SOFTWARE ARCHITECTURE & BIG DATA

Yandex.Metrica