Python öğrendiniz, kod yazıyorsunuz.
Ama hala "acemi gibi" kodluyorsunuz.
Bu tricks'leri öğrenince fark yaratırsınız.
- List Comprehension
Kötü yol:
sayilar = [1, 2, 3, 4, 5]
kareler = []
for x in sayilar:
kareler.append(x ** 2)
İyi yol:
kareler = [x ** 2 for x in sayilar]
Tek satır, daha hızlı, daha okunabilir.
- Unpacking
isim, yas, sehir = ["Ahmet", 25, "İstanbul"]
print(isim) # Ahmet
print(yas) # 25
Listeyi değişkenlere tek hamlede dağıt.
- Swap — Geçici değişken olmadan
a = 5
b = 10
a, b = b, a
print(a, b) # 10 5
Diğer dillerde temp değişken lazım, Python'da yok.
- Enumerate
isimler = ["Ali", "Veli", "Ayşe"]
Kötü yol:
for i in range(len(isimler)):
print(i, isimler)
İyi yol:
for i, isim in enumerate(isimler):
print(i, isim)
- Zip — İki listeyi birlikte gez
isimler = ["Ali", "Veli", "Ayşe"]
yaslar = [25, 30, 22]
for isim, yas in zip(isimler, yaslar):
print(f"{isim} — {yas} yaşında")
Ali — 25 yaşında
Veli — 30 yaşında
Ayşe — 22 yaşında
- Dictionary Comprehension
sayilar = [1, 2, 3, 4, 5]
kareler = {x: x**2 for x in sayilar}
print(kareler)
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
- get() ile güvenli dictionary erişimi
kullanici = {"isim": "Ahmet", "yas": 25}
Kötü yol — hata verir:
print(kullanici["email"]) # KeyError!
İyi yol:
print(kullanici.get("email", "Bulunamadı")) # Bulunamadı
- *args ve **kwargs
def toplam(*args):
return sum(args)
print(toplam(1, 2, 3)) # 6
print(toplam(1, 2, 3, 4, 5)) # 15
Kaç parametre geleceğini bilmiyorsanız kullanın.
def kullanici_olustur(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
kullanici_olustur(isim="Ahmet", yas=25, sehir="İstanbul")
- Lambda — Tek satır fonksiyon
Kötü yol:
def iki_kati(x):
return x * 2
İyi yol:
iki_kati = lambda x: x * 2
print(iki_kati(5)) # 10
Sıralama için çok kullanışlı:
kisiler = [("Ali", 25), ("Veli", 20), ("Ayşe", 30)]
kisiler.sort(key=lambda x: x[1])
print(kisiler)
[('Veli', 20), ('Ali', 25), ('Ayşe', 30)]
- Context Manager — with bloğu
Kötü yol:
dosya = open("dosya.txt", "r")
icerik = dosya.read()
dosya.close() # Unutulursa sorun
İyi yol:
with open("dosya.txt", "r") as dosya:
icerik = dosya.read()
Otomatik kapanır, hata olsa bile
BONUS: F-string
isim = "Ahmet"
yas = 25
Eski yol:
print("Merhaba " + isim + ", yaşın " + str(yas))
F-string:
print(f"Merhaba {isim}, yaşın {yas}")
Python 3.6+ f-string kullanın, daha temiz.
Hangisini bilmiyordunuz?
Başka trick'ler eklemek isteyen var mı?