Herkese merhabalar,
Aslında her gelen yeni sürüm ile birlikte bir makale yazmasam da, bu sefer gelen yenilikleri hayli işlevsel bulduğum için, bir makale haline getirip, bilgilendirme de yapmak istedim. Meraklısını şöyle alalım…
Switch/Case Python Dünyasına Geldi
Hepimizin C veya C++ gibi dillerden aşina olduğu “pattern matching” diye bilinen özellik 3.10 ile bizlerinde kod dünyalarına dahil olması ile if-else blokları üzerinden çözdüğümüz bu ihtiyacı artık direkt olarak Python’da kullanabilmek mümkün:
http_code = "418"
match http_code:
case "200":
print("OK")
case "404":
print("Not Found")
case "418":
print("I'm a teapot")
case _:
print("Code not found")
Context Managerlarınızı Parantezler İçerisinden Yönetebilirsiniz
Eğer birden fazla dosya işlemini tek satırda yapmak isterseniz, bunun için öncesinde with operatöründen sonra sırasıyla aşağıdaki gibi bir yapı kurmanız gerekiyordu ve bu yapıda aşağı “\” ile kaydığında nahoş bir görüntü ortaya çıkarıp, kodun okunmasını da negatif etkiliyordu:
Öncesi:
with open('file1.txt', 'r') as fin, \
open('file2.txt', 'w') as fout:
fout.write(fin.read())
Python 3.10:
with (open('file1.txt', 'r') as fin,
open('file2.txt', 'w') as fout):
fout.write(fin.read())
Çoklu Tip Belirleme
Değişken tiplerini eğer kontrol altında tutma konusunda benim gibi hassasiyetlere sahipseniz, bu özellik tam da istediğimiz işi yapmak üzere tasarlanmış. Diyelim ki elinizde bir integer değeriniz var, ama kimi zaman bu değişkenin float olma ihtimali de mevcut, bu tip durumlarda kontrol işini “değişken: int” yapmaktan kaçıp direkt değişkeni “type(değişken)” olarak kontrol etmek zorunda kalıyordum. Artık çoklu değişken verebiliyoruz, hem de 2 farklı şekilde.
Python 3.10 Birinci Yöntem:
from typing import Union
def add(x: Union[int, float], y: Union[int, float]):
return x + y
Python 3.10 Bilinen Yönteme Union Özelliğini Ekleme:
def add(x: int | float, y: int | float):
return x + y
Bu özellik sayesinde, gelen x değişkeni int ya da float olabilir, diğer tipler gelirse haber ver diyebiliyoruz. Mükemmel değil mi?
Çok Daha Anlamlı ve Detaylı Hata Mesajları
Şimdiye kadar “SyntaxError: unexpected EOF while parsing” hatasını almayanımız var mı? Peki anlamak için yapıyoruz, didik didik hangi süslü parantezi unuttuğumuzu, nerede tırnağı atladığımızı görmeye çalışıyoruz. Bu konuda da güzel bir adım atılmış ve çok daha detaylı ve açıklayıcı hata mesajları gelmiş durumda:






Benim için en değerli güncellemeler bunlar, tabii ki elbette bunlarla sınırlı değil gelen güncelleme, detayları için kaynak kısmında faydalandığım release notes kısmından detaylara göz atabilirsiniz.
Bir başka yazımda görüşmek üzere.
Kaynaklar:
https://docs.python.org/3.10/whatsnew/3.10.html
https://www.python.org/downloads/release/python-3100b4/
https://realpython.com/python-news-march-2021/
https://towardsdatascience.com/whats-new-in-python-3-10-a757c6c69342

Ellerine sağlık üstad.