Matematikte olduğu gibi, Python gibi programlama dillerinde de operatörler vardır. Bunları, bilgisayar bilimlerinin temelinde yatan son derece basit fonksiyonlar olarak düşünebilirsiniz. Bir bilgisayar programının indirgenebileceği en basit işlemlerdir. Her hevesli Veri Bilimci veya Yazılım Mühendisi için temel bilgidir.
Python Programlama Dili’nin temelleri hakkında daha fazla bilgi edinmek isterseniz, ücretsiz Intro to Python for Data Science kursumuza mutlaka göz atın.
Aritmetik Operatörler
Bunlara muhtemelen zaten aşinasınızdır; temel matematikten gelirler.
Aritmetik operatörler toplama (+), çıkarma (-), çarpma (*), bölme (/), üs alma (**), tam bölme (//) ve modülüs (%)’tür. İlk dördü oldukça basittir; toplama, çıkarma, çarpma ve bölmedir ve muhtemelen bunlara hâlihazırda aşinasınızdır.
Diğer üçü biraz daha karmaşıktır. Üs operatörü “müşterek kuvvetine yükseltme” anlamına gelir. Örneğin, 2 ** 3 ifadesi 2’nin kendisiyle 3 kez çarpılması demektir; yani 2 ** 3, 2 * 2 * 2 ile aynıdır ve 8’e eşittir.
Tam bölme, normal bölme gibidir; ancak sonuç her zaman aşağı yuvarlanır. Aşağıdaki örnekte 5, 2’ye bölünür ve sonuç 2,5’tir. Ancak tam bölme söz konusu olduğundan 2,5 aşağı yuvarlanarak 2 olur.
Son olarak modülüs, bölmeden kalan değerdir. 5%2 örneğinde, 2 sayısı 5’in içine yalnızca iki kez sığar, bu da kalanının 1 olduğu anlamına gelir.
# Exponentprint(5**2)# This is the same as 5 * 5# Floor Divisionprint(5//2)# Modulusprint(5%2)Altyapı:
Python’da toplama operatörü, string birleştirmek için de kullanılabilir. Bu, metinlerin tek bir string olarak bir araya getirileceği anlamına gelir; örneğin:
firstName ="Théo"
introduction ="Hi, my name is "+ firstName +"."print(introduction)Altyapı:
Biraz programlama deneyiminiz varsa, atama operatörlerini mutlaka kullanmışsınızdır. Bunlar bir değişkene belirli bir değer atar. En çok kullanılanı =’dir. Kullanmak için, değer atamak istediğiniz değişkenin adını, ardından = ve atanacak değeri yazmanız yeterlidir. Örneğin, balance değişkenine 100 değerini atamak isterseniz şunu yapabilirsiniz:
Diğer atama operatörleri de tam olarak aynı şekilde çalışır. Bunlar şunlardır:
*=
/=
**=
//=
%=
Karşılaştırma Operatörleri
Karşılaştırma operatörlerini, adından da tahmin edeceğiniz üzere, değişkenlerin değerlerini karşılaştırmak için kullanabilirsiniz. Her zaman True veya False olan bir boolean değer döndürürler. Altı tanedir:
a =3
b =5print(a == b)# Equalprint(a != b)# Not equalprint(a > b)# Greater thanprint(a < b)# Less thanprint(a >= b)# Greater than or equal toprint(a <= b)# Less than or equal toAltyapı:
== ve != sayılar yerine string’leri karşılaştırmak için de kullanılabilir. Diğer operatörler string’lerle uyumlu değildir; çünkü bir string’in diğerinden “büyük” olması söz konusu değildir.
Bunlara zaten aşina olabilirsiniz! Mantıkta bunlara mantıksal bağlaçlar denir. İnsan dilinde de yaygın şekilde kullanılırlar. Şunlardır: and, or ve not.
and, yalnızca her iki operand (karşılaştırdığınız iki boolean nesne) da True ise True döndürür. Örneğin:
Daha önce, +’nın sayıları toplamak için kullanılabildiğini, ancak string’leri birleştirmek için de kullanılabildiğini görmüştünüz. Yani +, üzerinde kullandığınız nesnenin türüne bağlı olarak farklı çalışır. Ancak bu her zaman geçerli olmayacaktır. Bazen üzerinde çalıştığınız operatör, kullanmak istediğiniz nesne türünü desteklemez.
İşte bir örnek. Diyelim ki ozzy ve filou adında iki Dog nesneniz var. Bunlar aşağıdaki Dog sınıfına aittir. Sınıfı, nesnelerin nasıl görünmesi ve nasıl davranması gerektiğine dair bir plan olarak düşünebilirsiniz. Bu durumda Dog nesnelerinin bir adı, yaşı ve boyu vardır. Sınıf tanımlandıktan sonra nesneleri yaratabilirsiniz. Bunlardan biri 3 yaşında ve 30 santimetre boyunda olan Ozzy’dir. Diğeri ise 5 yaşında ve 65 santimetre boyunda olan Filou’dur.
Bu örnek Nesne Yönelimli Programlama kavramını kullanır. Bunun hakkında daha fazla bilgi edinmek isterseniz Python’da Nesne Yönelimli Programlama eğitimimizi mutlaka okuyun.
Diyelim ki iki köpeği büyüktür operatörüyle (>) karşılaştırmak istediniz. Bu çalışmayacaktır. '>' not supported between instances of 'Dog' and 'Dog' şeklinde bir hata alırsınız. Bu, > operatörünün Dog sınıfı nesnelerini nasıl karşılaştıracağını bilmediği anlamına gelir.
---------------------------------------------------------------------------
TypeError Traceback(most recent call last)<ipython-input-96-428069ab24cc>in<module>()9 filou =Dog("Filou",5,65)10--->11print(filou > ozzy)TypeError:'>' not supported between instances of'Dog' and 'Dog'Altyapı:
Neyse ki operatör aşırı yükleme ile, operatörün Dog nesneleri üzerinde çağrıldığında nasıl davranacağını tanımlayabilirsiniz. Bu durumda, ‘greater than’ (büyüktür) anlamına gelen __gt__ adlı ve iki argüman alan bir yöntemin tanımlanması gerekir. Köpeklerimizi boylarına göre karşılaştırmak istediğimiz için yöntem self.height > other.height değerini döndürür.
Hangisinin önce çalıştırılacağını nasıl bileceksiniz? Bu kadar çok sembolün olduğu bir kod satırını nasıl okumalısınız? Soldan sağa mı çalıştırılır, yoksa belirli bir sırası mı vardır?
İşte burada öncelik devreye girer. Python operatörleri çok belirli bir sırayla yürütülür ve bazıları diğerlerine göre önceliğe sahiptir.
Aşağıdaki tabloda, operatörler için öncelik sırasını yukarıdan aşağıya görebilirsiniz. Bu kurallar, bir formülde belirli hesaplamaların diğerlerinden önce yapılması gerektiği matematiktekiyle aynıdır.
Öncelik
Operatör
Açıklama
1
**
üs alma
2
*, /, %, //
çarpma, bölme, modülüs, tam bölme
3
+, -
artı, eksi
4
>, <, >=, <=
karşılaştırma
5
==, !=
eşitlik
6
= %= /= //= -= += *= **=
atama
7
and, or, not
mantıksal
Birleşme Kuralları
Önceliğin önemli olduğunu gördünüz! Peki, çarpma ve bölme gibi aynı öncelik düzeyinde olanlar için ne geçerli? Aynı anda mı çalıştırılırlar? Hayır. *, \, % ve \\ soldan sağa, ** ise sağdan sola doğru yürütülür. Buna birleşme kuralları (associativity) denir.
Aşağıdaki örneğe bakın. Bu durumda operatörler soldan sağa yürütülür ve çıktı 3’tür.
Ancak parantez ekleyerek operatörlerin yürütülme sırasını değiştirebilirsiniz. Bu da matematikteki birleşme kurallarıyla aynı şekilde çalışır. Parantez içindeki her şey önce hesaplanır. Bu durumda önce tam bölme, ardından çarpma yapılacaktır.
Artık operatörlerin ne olduğunu, nasıl kullanmanız gerektiğini ve nasıl çalıştıklarını biliyorsunuz. Ayrıca aşırı yükleme, öncelik ve birleşme kurallarını da öğrendiniz. Python ustası olma yolunda iyi ilerliyorsunuz! Daha da fazlasını öğrenmek isterseniz, Intermediate Python for Data Science kursumuza göz atmaktan çekinmeyin.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Matematikte olduğu gibi, Python gibi programlama dillerinde de operatörler vardır. Bunları, bilgisayar bilimlerinin temelinde yatan son derece basit fonksiyonlar olarak düşünebilirsiniz. Bir bilgisayar programının indirgenebileceği en basit işlemlerdir. Her hevesli Veri Bilimci veya Yazılım Mühendisi için temel bilgidir.
Bu eğitimde şunları öğreneceksiniz:
Python Programlama Dili’nin temelleri hakkında daha fazla bilgi edinmek isterseniz, ücretsiz Intro to Python for Data Science kursumuza mutlaka göz atın.
Aritmetik Operatörler
Bunlara muhtemelen zaten aşinasınızdır; temel matematikten gelirler.
Aritmetik operatörler toplama (
+), çıkarma (-), çarpma (*), bölme (/), üs alma (**), tam bölme (//) ve modülüs (%)’tür. İlk dördü oldukça basittir; toplama, çıkarma, çarpma ve bölmedir ve muhtemelen bunlara hâlihazırda aşinasınızdır.Diğer üçü biraz daha karmaşıktır. Üs operatörü “müşterek kuvvetine yükseltme” anlamına gelir. Örneğin,
2 ** 3ifadesi2’nin kendisiyle3kez çarpılması demektir; yani2 ** 3,2 * 2 * 2ile aynıdır ve 8’e eşittir.Tam bölme, normal bölme gibidir; ancak sonuç her zaman aşağı yuvarlanır. Aşağıdaki örnekte 5, 2’ye bölünür ve sonuç 2,5’tir. Ancak tam bölme söz konusu olduğundan 2,5 aşağı yuvarlanarak 2 olur.
Son olarak modülüs, bölmeden kalan değerdir.
5%2örneğinde, 2 sayısı 5’in içine yalnızca iki kez sığar, bu da kalanının 1 olduğu anlamına gelir.Python’da toplama operatörü, string birleştirmek için de kullanılabilir. Bu, metinlerin tek bir string olarak bir araya getirileceği anlamına gelir; örneğin:
Atama Operatörleri
Biraz programlama deneyiminiz varsa, atama operatörlerini mutlaka kullanmışsınızdır. Bunlar bir değişkene belirli bir değer atar. En çok kullanılanı
=’dir. Kullanmak için, değer atamak istediğiniz değişkenin adını, ardından=ve atanacak değeri yazmanız yeterlidir. Örneğin,balancedeğişkenine 100 değerini atamak isterseniz şunu yapabilirsiniz:balancedeğerini 10 artırmak isterseniz,balance += 10kullanabilirsiniz. Bu,balance = balance + 10ifadesinin eşdeğeridir ancak çok daha kısadır.Aynısı
-=için de geçerlidir;balance -= 10,balance = balance - 10ile aynıdır:Diğer atama operatörleri de tam olarak aynı şekilde çalışır. Bunlar şunlardır:
*=/=**=//=%=Karşılaştırma Operatörleri
Karşılaştırma operatörlerini, adından da tahmin edeceğiniz üzere, değişkenlerin değerlerini karşılaştırmak için kullanabilirsiniz. Her zaman
TrueveyaFalseolan bir boolean değer döndürürler. Altı tanedir:==!=><>=<=İşte bazı örnek karşılaştırmalar:
==ve!=sayılar yerine string’leri karşılaştırmak için de kullanılabilir. Diğer operatörler string’lerle uyumlu değildir; çünkü bir string’in diğerinden “büyük” olması söz konusu değildir.Mantıksal Operatörler
Bunlara zaten aşina olabilirsiniz! Mantıkta bunlara mantıksal bağlaçlar denir. İnsan dilinde de yaygın şekilde kullanılırlar. Şunlardır:
and,orvenot.and, yalnızca her iki operand (karşılaştırdığınız iki boolean nesne) da True ise True döndürür. Örneğin:Bu mantıksal operatörün davranışını anlamak için bir doğruluk tablosundan yararlanabilirsiniz:
or, operandlardan herhangi biri (bir veya daha fazlası) True olduğunda True olur.Dikkat: Bunlar iki operanddan fazlasıyla da çalışır; örneğin:
not, operandının tersini döndürür; yaniFalseverildiğindeTrue, tersi durumdaFalse.Operatör aşırı yükleme
Daha önce,
+’nın sayıları toplamak için kullanılabildiğini, ancak string’leri birleştirmek için de kullanılabildiğini görmüştünüz. Yani+, üzerinde kullandığınız nesnenin türüne bağlı olarak farklı çalışır. Ancak bu her zaman geçerli olmayacaktır. Bazen üzerinde çalıştığınız operatör, kullanmak istediğiniz nesne türünü desteklemez.İşte bir örnek. Diyelim ki
ozzyvefilouadında ikiDognesneniz var. Bunlar aşağıdakiDogsınıfına aittir. Sınıfı, nesnelerin nasıl görünmesi ve nasıl davranması gerektiğine dair bir plan olarak düşünebilirsiniz. Bu durumdaDognesnelerinin bir adı, yaşı ve boyu vardır. Sınıf tanımlandıktan sonra nesneleri yaratabilirsiniz. Bunlardan biri 3 yaşında ve 30 santimetre boyunda olan Ozzy’dir. Diğeri ise 5 yaşında ve 65 santimetre boyunda olan Filou’dur.Bu örnek Nesne Yönelimli Programlama kavramını kullanır. Bunun hakkında daha fazla bilgi edinmek isterseniz Python’da Nesne Yönelimli Programlama eğitimimizi mutlaka okuyun.
Diyelim ki iki köpeği büyüktür operatörüyle (
>) karşılaştırmak istediniz. Bu çalışmayacaktır.'>' not supported between instances of 'Dog' and 'Dog'şeklinde bir hata alırsınız. Bu,>operatörününDogsınıfı nesnelerini nasıl karşılaştıracağını bilmediği anlamına gelir.Neyse ki operatör aşırı yükleme ile, operatörün
Dognesneleri üzerinde çağrıldığında nasıl davranacağını tanımlayabilirsiniz. Bu durumda, ‘greater than’ (büyüktür) anlamına gelen__gt__adlı ve iki argüman alan bir yöntemin tanımlanması gerekir. Köpeklerimizi boylarına göre karşılaştırmak istediğimiz için yöntemself.height > other.heightdeğerini döndürür.Öncelik
Birçok operatörü bir arada kullandığınızda işler kafa karıştırıcı olabilir. Aşağıdaki örneğe bir göz atın:
Hangisinin önce çalıştırılacağını nasıl bileceksiniz? Bu kadar çok sembolün olduğu bir kod satırını nasıl okumalısınız? Soldan sağa mı çalıştırılır, yoksa belirli bir sırası mı vardır?
İşte burada öncelik devreye girer. Python operatörleri çok belirli bir sırayla yürütülür ve bazıları diğerlerine göre önceliğe sahiptir.
Aşağıdaki tabloda, operatörler için öncelik sırasını yukarıdan aşağıya görebilirsiniz. Bu kurallar, bir formülde belirli hesaplamaların diğerlerinden önce yapılması gerektiği matematiktekiyle aynıdır.
Birleşme Kuralları
Önceliğin önemli olduğunu gördünüz! Peki, çarpma ve bölme gibi aynı öncelik düzeyinde olanlar için ne geçerli? Aynı anda mı çalıştırılırlar? Hayır.
*,\,%ve\\soldan sağa,**ise sağdan sola doğru yürütülür. Buna birleşme kuralları (associativity) denir.Aşağıdaki örneğe bakın. Bu durumda operatörler soldan sağa yürütülür ve çıktı 3’tür.
Ancak parantez ekleyerek operatörlerin yürütülme sırasını değiştirebilirsiniz. Bu da matematikteki birleşme kurallarıyla aynı şekilde çalışır. Parantez içindeki her şey önce hesaplanır. Bu durumda önce tam bölme, ardından çarpma yapılacaktır.
Sonuç
Artık operatörlerin ne olduğunu, nasıl kullanmanız gerektiğini ve nasıl çalıştıklarını biliyorsunuz. Ayrıca aşırı yükleme, öncelik ve birleşme kurallarını da öğrendiniz. Python ustası olma yolunda iyi ilerliyorsunuz! Daha da fazlasını öğrenmek isterseniz, Intermediate Python for Data Science kursumuza göz atmaktan çekinmeyin.