Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
4
Cevap
393
Tıklama
2
Öne Çıkarma
Python 3.9 Sürümünün Yeni Özellikleri
E
5 yıl
Er
Konu Sahibi

Mart ayında 3.9 sürümü yayınlanan Python programlama dilinin, bugün itibariyle 3.9.0b4 sürümü yayınlandı. Yakın zamanda tam sürümün yayınlanılması planlanmaktadır. Peki, bu sürümün diğer sürümlerden farkı nedir? Ne tür değişiklikler söz konusu? Yeni özelliklerden bazıları inanılmaz derecede heyecan verici ve sürüm yayınlandıktan sonra kullanıldıklarını görmek oldukça şaşırtıcı olacak. Python 3.9 sürümünün yeni özellikleri 4 başlık altında toplanılabilir:
  • Sözlük Birleştirme İşlemleri
  • Değişken Türü İpucu
  • İki Yeni String Yöntemi
  • Yeni Python Ayrıştırıcısı
Şimdi bu yeni değişikliklerin nasıl kullanıldıklarına bakalım.
Sözlük Birleştirme İşlemleriŞık söz dizimi ile en sevilen özelliklerden biri olmuştur. A ve B olarak birleştirmeniz gereken iki sözlük var ise, bu sözlükleri birleştirmek için “birleşme” işaretini kullanıyoruz.Birleşme işareti, ” | ” dir.
a = {1: 'a', 2: 'b', 3: 'c'}

b = {4: 'd', 5: 'e'}

c = a | b

print(c)

#Beklenen çıktı:

[Out] : {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
Ve sözlüğü güncelleyen güncelleme operatörü, ” |= “
a = {1: 'a', 2: 'b', 3: 'c'}

b = {4: 'd', 5: 'e'}

a |= b

print(a)

#Beklenen Çıktı:

[Out]: {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
Eğer sözlüklerin ikisinde ortak bir anahtar varsa, ikinci sözlükte anahtar kullanılır:
a = {1: 'a', 2: 'b', 3: 'c', 6: 'ortak'}

b = {4: 'd', 5: 'e', 6: 'ama farklı'}

print(a | b)

#Beklenen Çıktı:

[Out]: {1: 'a', 2: 'b', 3: 'c', 6: 'ama farklı', 4: 'd', 5: 'e'}
“|=” operatörünün başka bir güzel özelliği de bir liste veya jeneratör gibi nesneler kullanarak sözlüğü yeni key (anahtar)/ value (değer) çiftleriyle güncelleyebilmesidir:
a = {'a': 'one', 'b': 'two'}

b = ((i, i**2) for i in range(3))

a |= b

print(a)

#Beklenen Çıktı:

[Out]: {'a': 'one', 'b': 'two', 0: 0, 1: 1, 2: 4}
Aynı işlemi standart “|” işareti ile denersek, TypeError hatası alırız, çünkü “|” operatörü sadece sözlükler arasında işlem yapmamıza izin verir.

< Resime gitmek için tıklayın >
Değişken Türü İpucuPython dinamik olarak yazılmıştır, yani kodumuzda veri türlerini belirtmemize gerek yoktur. Bu çoğu zaman iyi ama bazen kafa karıştırıcı olabiliyor, Python’un bu kadar esnek olması bazı sıkıntılara sebep olabilmektedir.3.5 sürümünden sonra bu veri türlerini belirleyebildik, ama oldukça hantaldı. Bu güncelleme ile bu gerçekten değişti, bir örnek kullanalım:

< Resime gitmek için tıklayın >
add_int fonksiyonumuzda, bir sayıyı kendisiyle toplamak istiyoruz. Ama editör bunu bilmiyor ve “+” işaretini kullanarak iki dizeyi birbirine herhangi bir uyarı vermeden ekleyebiliyor.Ancak, biz fonksiyonu tanımlarken değişkeni tipini int olarak belirtirsek, fonksiyona parametre olarak string değer verdiğimizde bize uyarı verecektir. Çünkü fonksiyonun bizden beklediği parametre olarak int değer girilmesidir. Editör bu durumu kolayca fark edebiliyor.Bir başka örnek verecek olursak,

< Resime gitmek için tıklayın >
sum_dict fonksiyonumuz, parametre olarak bir sözlük almaktadır. Fakat spesifik olarak belirtilen bir şey vardır, o da sözlüğün anahtarlarının bir String, değerlerinin ise bir int olmasıdır.Bu fonksiyonu test etmek istediğimizde, ilk test değişkeninde herhangi bir sıkıntı yoktur. Çünkü fonksiyonun gereksinimlerini karşılamaktadır. Ancak test2 sözlüğüne baktığımız zaman anahtar ve değerlerinin int olduğunu görebiliyoruz. Editör bu durumda bize bir uyarı vermektedir.Görüldüğü üzere, değişken türü ipucu özelliği her yerde kullanılabilir ve yeni söz dizimi sayesinde, artık daha anlaşılır gözükmektedir.
String YöntemleriDiğer özellikler gibi görkemli olmasa da, yine de bahsedilmeye değer. Ön ekleri ve son ekleri kaldırmak için iki yeni dize yöntemi eklendi:
"Merhaba dünya".removeprefix("Me")

#Beklenen çıktı:

[Out]: "rhaba dünya"

"Merhaba dünya".removesuffix("ya")

#Beklenen çıktı:

[Out]: "merhaba dün"

Yeni AyrıştırıcıBu, gözden uzak bir değişikliktir, ancak Python programlama dilinin gelecekteki evrimi için en önemli değişiklerden biri olma potansiyeline sahiptir.Python şu anda ağırlıklı olarak LL(1) tabanlı bir dil bilgisi kullanıyor. Kullanılan bu yöntemin kullanımı nedeniyle Python’da bazı sorunlara yol açıyor.
  • Python LL olmayan(1) dil bilgisi içerir; Bu nedenle, geçerli dil bilgisinin bazı bölümleri geçici çözümler kullanılır ve gereksiz karmaşıklık oluşturur.

  • LL(1) Python söz diziminde sınırlamalar yaratır. Bu sorun, aşağıdaki kodun yalnızca geçerli ayrıştırıcı (SyntaxError( kullanılarak uygulanamayacağını vurgular:
with (open("a_really_long_foo") as foo,
open("a_really_long_bar") as bar):
pass
LL(1) ayrıştırıcı da sol öz yineleme ile bozuluyor. Belirli öz yinelemeli söz dizimi, ayrıştırma ağacında sonsuz bir döngüye neden olabilir. Python’un yaratıcısı Guido van Rossum bunu burada açıklıyor.PEG tabanlı yeni ayrıştırıcı, Python geliştiricilerine önemli ölçüde daha fazla esneklik sağlayacak – Python 3.10’dan itibaren fark etmeye başlayacağımız bir şey.Python 3.9 sürümünün yeni özellikleri özellikleri bu şekildedir. Gelişmeleri yakından takip etmek isterseniz, Python dilinin resmi dokümantasyonunu inceleyebilirsiniz.[Alinti] - Kaynak: Python 3.9 Sürümünün Yeni Özellikleri | Teknoloji.org



G
5 yıl
Er

E
5 yıl
Er
Konu Sahibi

hahaha bunu diyen android geliştiriyordur ve hayatında python kullanmamıştır




Bu mesajda bahsedilenler: @gatsbythegreat
K
5 yıl
Yüzbaşı

sözlük birleştirme işareti zaten yok muydu ben mi yanlış biliyorum


Bu mesaja 1 cevap geldi.
T
5 yıl
Yarbay

| şeklinde yoktu.



< Bu ileti mini sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @Kurtçu Restrop
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.