Python 3.11'deki Yenilikler

Feb 20 2023
Python 3.11.

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 print len[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