Python 3.9 - Bilmeniz Gerekenler
Python, topluluğun ihtiyaçları doğrultusunda sürekli olarak güncellenmeye devam ediyor. Aynı zamanda yakın gelecekte en çok kullanılan dil olma konusunda da büyük bir aday. Python’ın yeni versiyonu olan 3.9 sürümünde pek çok yenilik mevcut. Bu yazımda bu yeniliklerden bahsedeceğim.
Beta Versiyon Kurulumu
Beta versiyonu kullanabilmek için bazı kurulumlar yapmamız gerekiyor. Bu kurulumları yapmak için ihtiyacımız olan adımlar şunlar:
wget [https://www.python.org/ftp/python/3.9.0/Python-3.9.0a5.tgz
tar](https://www.python.org/ftp/python/3.9.0/Python-3.9.0a5.tgztar) xzvf Python-3.9.0a5.tgz
cd Python-3.9.0a5
./configure — prefix=$HOME/python-3.9.0a5
make
make install
$HOME/python-3.9.0a5/bin/python3.9
Bu kurulumu başarılı bir şekilde tamamladıktan sonra aşağıdaki mesaj ile karşılaşacaksınız.
3.9.0a5 (default, Apr 16 2020, 18:57:58)
[GCC 9.2.1 20191008] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
[](hips.com.tr/python3.9-bilmeniz-gerekenler/#.. "Sözlük Birleştirme")Sözlük Birleştirme
A ve B adında 2 adet sözlüğümüzün (dict) olduğunu varsayalım. Bu sözlükleri birleştirmek için “birleştirme” ( | ) işaretini kullanabiliriz. Aşağıdaki örnek ile pekiştirelim.
a = {1: ‘a’, 2: ‘b’, 3: ‘c’}
b = {4: ‘d’, 5: ‘e’}
a |= b
print(a)
{1: ‘a’, 2: ‘b’, 3: ‘c’, 4: ‘d’, 5: ‘e’}
Ayrıca sözlüğü güncellemek için bir de güncelleme operatörümüz var. (|=)
a = {1: 'a', 2: 'b', 3: 'c'}
b = {4: 'd', 5: 'e'}
**a |= b**
print(a)
{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
Eğer sözlükte benzer anahtarlar (key) var ise ikinci sözlükteki değer kullanılır.
a = {1: ‘a’, 2: ‘b’, 3: ‘c’, 6: ‘benzer_deger’}
b = {4: ‘d’, 5: ‘e’, 6: ‘farkli_deger’}
print(a | b)
{1: ‘a’, 2: ‘b’, 3: ‘c’, 6: ‘farklı_deger’, 4: ‘d’, 5: ‘e’}
Değişken Türü İpucu
Python dinamik olarak yazıldığından dolayı her tanımladığımız değişken için veri tipi belirlememize gerek yoktur. İlk başlarda bu çok kolaylık gibi gözükse de zaman zaman kafa karışıklığına sebep olabilir.
Python’a gelen Değişken Türü İpucu özelliği 3.5 sürümünden itibaren sürekli olarak iyileştirilmeye çalışılıyordu.
Aslında Python 3.5 sürümü ile birlikte veri türlerini belirlememize imkan sağlıyor fakat bir hayli yavaş çalışıyordu. 3.9 versiyonu ile birlikte bu süreç çok daha hızlı hale geldi.
Bir örnekle bu özelliği de pekiştirelim.
Yukarıda gördüğümüz sum_dict fonksiyonuna bir sözlük tanımlanmış. Fakat test ve test2 sözlükleri birbirinden farklı, birinin değerleri “string” iken diğerinin “int”. Bu fonksiyonu çalıştırdığımızda, “sum_dict(test)” de sorun çıkmayacaktır. Çünkü tanımlanan fonksiyonun gereksinimlerini karşılıyor, fakat diğer fonksiyonun değerleri farklı olduğundan editörümüz hata veriyor.
String Yöntemleri
Diğer özellikler kadar büyük bir yenilik olmasa da, ön ekleri ve son ekleri kaldırmak için iki yeni yöntemimiz (method) var.
"Testing".remove**prefix**("Te")
[Out]: "sting"
"Testing".removesuffix("ing")
[Out]: "Test"
Yeni Matematik Yöntemi
Math modülüne bir dizi yeni yöntemler (method) eklendi.
import math
En büyük ortak böleni
math.gcd(80, 64, 152)
8
Daha önce bu yöntemi sadece 2 sayı için kullanabiliyorduk fakat şu anda bir sayı sınırımız olmadan kolaylıkla kullanabiliyoruz.
Yeni eklenen fonksiyonumuz ise : math.lcm fonksiyonu!
En küçük ortak kat
math.lcm(4, 8, 5)
40
IPv6 Kapsamlı Adresler
Python 3.9’da sunulan bir diğer değişiklik, IPv6 adreslerinin kapsamını belirleme yeteneğidir. IPv6 kapsamları, internetin hangi bölümünde ilgili IP adresinin geçerli olduğunu belirtmek için kullanılır.
İstediğimiz kapsam, IP adresinin sonunda % işareti kullanılarak belirtilebilir. Örneğin: 3FFE: 0: 0: 1: 200: F8FF: FE75: 50DF% 2 bu sayede IP adresinin yerel kapsamı 2 olur.
Dolayısıyla, Python’da IPv6 adresleriyle uğraşmanız gerektiğinde, artık bunu şu şekilde yapabilirsiniz:
from ipaddress import IPv6Address
addr = IPv6Address(‘ff02::fa51%1’)
print(addr.scope_id)
Özet
Özet olarak Python her geçen gün daha güçlü ve kullanışlı hale geliyor. Her ne kadar bu özellikleri günlük hayatta sürekli olarak kullanmayacak olsak da kullandığımız yazılım diline eklenen güncel yeniliklerden haberdar olmak bizler için yararlı olacaktır diye düşünüyorum.
Kaynaklar :
- https://www.python.org/downloads/release/python-390a5/
- https://docs.python.org/3.9/whatsnew/3.9.html
DSC Tensorflow mentoru olarak, yapay zeka alanında her türlü teknik ya da teknik olmayan konuda elimden geldiğince sizlere yardımcı olmaya çalışırım.
Görüş, tavsiye ve sorularınız için bana ulaşabilirsiniz!
Twitter | LinkedIn