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 :


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