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.

Image for post
Image for post

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.

Image for post
Image for post

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

Google Developer Student Clubs

Developer Student Clubs are university based community groups for students interested in technology.

Doğancan Mavideniz

Written by

mavideniz.org

Google Developer Student Clubs

Developer Student Clubs are university based community groups for students interested in Google developer technologies. Students from all undergraduate or graduate programs with an interest in growing as a developer are welcome.

Doğancan Mavideniz

Written by

mavideniz.org

Google Developer Student Clubs

Developer Student Clubs are university based community groups for students interested in Google developer technologies. Students from all undergraduate or graduate programs with an interest in growing as a developer are welcome.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store