Apa yang Baru di Python 3.11

Feb 20 2023
Piton 3.11.

Python 3.11.2 adalah versi terbaru dari bahasa pemrograman populer, dan menyertakan sejumlah fitur dan peningkatan baru. Dalam artikel blog ini, kita akan melihat beberapa fitur baru di Python 3.11 dan memberikan beberapa contoh kode untuk Anda mulai.

Ringkasan

Python 3.11 10–60% lebih cepat dari 3.10. Mengukur percepatan 1,25x pada rangkaian benchmark standar. Ada exception, speed, syntaxperbaikan.

Pengecualian

Mulai sekarang Anda dapat mengajukan beberapa pengecualian dengan menggunakan grup pengecualian.

PEP 654 memperkenalkan fitur bahasa yang memungkinkan sebuah program untuk memunculkan dan menangani beberapa pengecualian yang tidak terkait secara bersamaan. Jenis bawaanExceptionGroupdanBaseExceptionGroupmemungkinkan untuk mengelompokkan pengecualian dan membesarkannya bersama-sama, danexcept*sintaks baru menggeneralisasiexceptuntuk mencocokkan subgrup dari grup pengecualian.

https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep654

Anda juga dapat menambahkan catatan ke pengecualian Anda dengan menggunakan ini, Anda dapat memberikan lebih banyak informasi dengan mudah. Anda perlu menangkap pengecualian dengan menggunakan try exceptlalu Anda perlu menambahkan catatan, dan menaikkannya lagi

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

Jenis baru adalah add Selfyang normal self.

Fitur Baru Terkait Petunjuk Ketik

Bagian ini membahas perubahan besar yang memengaruhi petunjuk tipe PEP 484 dan typingmodul.

Ini contohnya:

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>

Requireddan NotRequiredmemberikan cara langsung untuk menandai apakah masing-masing item TypedDictharus ada. Sebelumnya, ini hanya mungkin menggunakan warisan.

Semua bidang masih diperlukan secara default, kecuali parameter total diatur ke False, dalam hal ini semua bidang masih tidak diperlukan secara default. Misalnya, berikut ini menentukan a TypedDictdengan satu kunci wajib dan satu kunci tidak wajib:

Membuat kamus khusus adalah kemampuan yang ampuh jika Anda ingin membangun perpustakaan dan mengurangi kesalahan yang mungkin terjadi dari pengguna.

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

Lihat di sini untuk informasi lebih lanjut

Percepatan Operasi

  • Operasi biner x+x; x*x; x-x;10%
  • Berlangganan a[i]10–25%
  • Langganan toko a[i] = z10–25%
  • Panggilan f(arg) C(arg)20%
  • Muat variabel global print len[1 ]
  • Muat atribut o.attr[ 3]
  • Memuat metode untuk panggilan o.meth()10–20%
  • Simpan atribut o.attr = z2% di pyperformance
  • Buka Paket Urutan *seq8%

Sumber

https://docs.python.org/3/whatsnew/3.11.html