Farklı Temel Türlerin Birlikte İşleme Sokulması
13-0.39.50
Python dahil olmak üzere birçok programlama dilinde farklı türdeki nesneler beraber işleme sokulabilmektedir. Buradaki kuralları öğrenmemiz gerekir. C, C++, Java, C#, Python gibi dillerde farklı türlerle işlem yapılabilirken Swift dilinde bu özellik yoktur, Swift tür dönüştürmesini programcının yapmasını istemektedir.
int
ve float
Aritmetik operatörlerde iki operand da int
ise sonuç int
, float
ise
float
çıkmaktadır. Ama bir int
ile float
işleme sokulursa sonuç float
çıkar.
Operand 1 |
Operand 2 |
Sonuç ( |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
/
operatörü her zaman float
değer üretmektedir.
Örneğin:
>>> type(3 + 4)
<class 'int'>
>>> type(3.5 + 4)
<class 'float'>
>>> type(4 / 2)
<class 'float'>
Elbette önceki yazılarda da konuştuğumuz gibi int
bir değer float
değerine
dönüştürülürken değerde (mantis) kayıplar oluşabilir, bu durum bir exception
sebebi değildir. Ama OverflowError
gibi bir exception oluşursa yine aritmetik
işlem sırasında exception da oluşabilir.
Karşılaştırma operatörleri ise her zaman bool
türden değer üretirler.
>>> type(10 > 5.0)
<class 'bool'>
bool
Türü
Aritmetik işlemlere sokulurken bool
türleri int
türüne adeta otomatik
çevrilir. Bu çevrim sırasında False
, 0
; True
ise 1
olarak çevrilir.
Aritmetik işlemleri düşündüğümüz zaman:
Operand 1 (veya 2) |
Operand 2 (veya 1) |
Sonuç ( |
---|---|---|
|
|
|
|
|
|
|
|
|
>>> type(True/True)
<class 'float'>
>>> type(True + 1)
<class 'int'>
>>> type(True + 1.0)
<class 'float'>
>>> type(True + False)
<class 'int'>
Java ve C# gibi dillerde bool
türü hiçbir türle aritmetik işleme sokulamaz.
Ama Python dilinde, C dilinde olduğu gibi, bu geçerli bir durumdur.
>>> (5 > 0) + 10
11
Burada 5 > 0
, bool
türden True
değerinde bir değer üretir ve True
, 10
ile aritmetik işleme sokulunca 1
olarak ele alınır ve sonuç 11
çıkar.
complex
Türü
complex
türü ile int
veya float
veya bool
türü işleme sokulursa sonuç
complex
türden elde edilir.
str
Türü
13-1.07.46
İki str
türünden değer toplama işlemine sokulabilir ama diğer aritmetik
işlemler yapılamaz. Toplama işlemi sonucunda yine str
türünden bir nesne elde
edilir. Değer olarak da iki operandın birleşimi olan bir yazı vardır. Yani
concatenate, concat, işlemi yapılmış olur. Java ve C#’ta da bu özellik
vardır.
>>> x = "alper" + "yazar"
>>> x
'alperyazar'
C# ve Java dilinde +
operatörünün bir operandı str
diğer operandı başka
türlerden olabilmektedir. Bu dillerde diğer tür otomatik olarak str
türüne
dönüştürülür ve yine concat işlemi yapılır. Python’da ise bu işlem otomatik
olarak yapılmaz, programcının elle yapması gerekir.
>>> print('Alper' + 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
>>> print('Alper' + str(2))
Alper2
Python’da bir str
, int
türden bir değerle çarpılabilir. Burada
repetition yani yineleme işlemi yaplmaktadır.
>>> print('alper' * 3)
alperalperalper
>>> print(3 * 'alper')
alperalperalper
>>> s = ' ' * 5 + 'Ankara' + ' ' * 5
>>> s
' Ankara '
Negatif bir değer ile ya da 0
ile çarpılırsa boş string elde edilir.
>>> print(0 * 'alper')
>>> print(-2 * 'alper')
>>> print(-2. * 'alper')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'float'
13-1.18.12
💭 Yorumlar
Yorum altyapısı giscus tarafından (evet tarafından!) sağlanmaktadır. Yorum yazabilmek için GitHub hesabınız üzerinden giriş yapmanız gerekmektedir. Yorumlar, Github Discussions üzerinde saklanmaktadır.
b2895859-a09d-4821-b599-6b945565b5c9