Python 3.11'deki Yenilikler
Python 3.11.2, popüler programlama dilinin en son sürümüdür ve bir dizi yeni özellik ve iyileştirme içerir. Bu blog makalesinde, Python 3.11'deki bazı yeni özelliklere bakacağız ve başlamanız için bazı örnek kodlar vereceğiz.
Özet
Python 3.11, 3.10'dan %10-60 daha hızlıdır. Standart kıyaslama paketinde 1,25x hız artışı ölçüldü. exception, speed, iyileştirmeler var syntax.
İstisnalar
Bundan sonra, istisna gruplarını kullanarak birden fazla istisna oluşturabilirsiniz.
PEP 654, bir programın birden fazla ilgisiz istisnayı aynı anda oluşturmasını ve işlemesini sağlayan dil özelliklerini sunar. Yerleşik türlerExceptionGroupveBaseExceptionGroupistisnaları gruplandırmayı ve birlikte yükseltmeyi mümkün kılar ve yeni sözdizimi,istisna gruplarının alt gruplarını eşleştirmek içinexcept*genelleştirirexcept
https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep654
Ayrıca istisnanıza notlar ekleyebilir, bunu kullanarak daha fazla bilgiyi kolayca verebilirsiniz. Kullanarak istisnayı yakalamanız gerekir try except, ardından bir not eklemeniz ve tekrar yükseltmeniz gerekir.
try:
i = 1 / 0
except Exception as e:
e.add_note("New Note: Zero Division Error")
raise
Traceback (most recent call last):
File "C:/Users/Sarper/Desktop/test.py", line 2, in <module>
i = 1 / 0
ZeroDivisionError: division by zero
New Note: Zero Division Error
SelfYeni tip, normal olan add'tır self.
Tip İpuçlarıyla İlgili Yeni Özellikler
Bu bölüm, PEP 484 tipi ipuçlarını ve modülü etkileyen önemli değişiklikleri kapsar typing.
İşte bir örnek:
from typing import Self
class MyClass:
def __init__(self, num):
self.num = num
def create_class(self) -> Self:
return MyClass(3) # returning new class
my_class = MyClass(2)
print(my_class.create_class())
# OUTPUT:
# <__main__.MyClass object at 0x000002477E1D0250>
from typing import Self
class MyClass:
def __init__(self, num):
self.num = num
def return_class(self) -> Self:
return self # returning self
my_class = MyClass(2)
print(my_class.return_class())
# OUTPUT:
<__main__.MyClass object at 0x0000014B89E71350>
Requiredve NotRequiredtek tek öğelerin a'da bulunması gerekip gerekmediğini işaretlemenin basit bir yolunu sağlar TypedDict. Önceden, bu yalnızca kalıtım kullanılarak mümkündü.
total parametresi olarak ayarlanmadıkça tüm alanlar varsayılan olarak zorunludur False; bu durumda tüm alanlar varsayılan olarak hala gerekli değildir. Örneğin, aşağıdaki, TypedDictbir gerekli ve bir gerekli olmayan anahtarla a'yı belirtir:
Özel sözlükler oluşturmak, kitaplıklar oluşturmak ve kullanıcıdan kaynaklanabilecek hataları azaltmak istiyorsanız güçlü bir yetenektir.
class Movie(TypedDict):
title: str
year: NotRequired[int]
m1: Movie = {"title": "Black Panther", "year": 2018} # OK
m2: Movie = {"title": "Star Wars"} # OK (year is not required)
m3: Movie = {"year": 2022} # ERROR (missing required field title)
class Movie(TypedDict, total=False):
title: Required[str]
year: int
asyncio contextlib dataclasses datatime enum fcntl fractions functools haslib inpect locale logging math operator os pathlib re shutlit socket sqlite3 string sys sysconfig tempfile threading time tkinter traceback typing unicodedata unittest venv warnings zipfile
Daha fazla bilgi için buraya bakın
Operasyon Hızlandırmaları
- İkili işlemler
x+x; x*x; x-x;%10 - Alt simge
a[i]%10–25 - Alt simgeyi sakla
a[i] = z%10–25 - aramalar
f(arg)C(arg)%20 - Genel değişkeni yükle
printlen[1 ] - Özniteliği yükle
o.attr[ 3] - Çağrı için yükleme yöntemleri
o.meth()%10–20 - Özelliği
o.attr = z2% pyperformance'ta saklayın - Sırayı Paketten Çıkarma
*seq%8
Kaynak
https://docs.python.org/3/whatsnew/3.11.html

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































