Python 3.9: Bilmeniz Gerekenler

Dogancan Mavideniz
Google Developer Student Clubs
3 min readOct 25, 2020

Blogun tamamına ücretsiz bir şekilde kişisel blogumdan ulaşabilirsin.

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
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.

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".removeprefix("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 IPv6Addressaddr = IPv6Address(‘ff02::fa51%1’)
print(addr.scope_id)
# “1” — interface-local IP address

Ö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 | Instagram

--

--