Ini Dia Yang Baru Di Python 3.11 - CRUDPRO

Ini Dia Yang Baru Di Python 3.11

Ini Dia Yang Baru Di Python 3.11

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

Ringkasan

Python 3.11 10–60% lebih cepat dari 3.10. Mengukur kecepatan 1,25x pada package benchmark standar. Ada pengecualian , kecepatan , perbaikan sintaks.

Pengecualian

Mulai sekarang Anda dapat memunculkan banyak 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. Tipe bawaan ExceptionGroup dan BaseExceptionGroup memungkinkan untuk mengelompokkan pengecualian dan meningkatkannya bersama-sama, dan sintaks exception* baru menggeneralisasi kecuali untuk 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 informasi lebih banyak dengan mudah. Anda perlu menangkap pengecualian dengan menggunakan try except kemudian Anda perlu menambahkan catatan, dan meningkatkannya 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

Mengetik

Tipe baru adalah add Self yang merupakan self normal.

Fitur Baru Terkait Petunjuk Ketik

Bagian ini membahas perubahan besar yang mempengaruhi petunjuk jenis PEP 484 dan modul typing.

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>

Menandai masing-masing item TypedDict sebagai wajib atau tidak wajib

Required dan NotRequired menyediakan cara langsung untuk menandai apakah setiap item di TypedDict harus ada. Sebelumnya, ini hanya mungkin menggunakan inheritance.

Semua bidang masih wajib diisi secara default, kecuali parameter total disetel ke False, dalam hal ini semua bidang tetap tidak wajib diisi secara default. Misalnya, berikut ini menentukan TypedDict dengan satu kunci wajib dan satu kunci tidak wajib:

Membuat kamus khusus merupakan kemampuan yang ampuh jika ingin membangun library dan mengurangi error 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)

Definisi berikut setara:

class Movie(TypedDict, total=False):
   title: Required[str]
   year: int

Modul yang Ditingkatkan

asyncio contextlib dataclasses datatime enum fcntl fractions functools haslib inpect locale logging math operator os pathlib re shutlit soket sqlite3 string sys sysconfig tempfile waktu threading tkinter traceback menulis unicodedata unittest venv peringatan zipfile

Lihat di sini untuk informasi selanjutnya

Percepatan Operasi

  • Operasi biner x+x; x*x; xx; 10%
  • Berlangganan a[i] 10–25%
  • Simpan subskrip a[i] = z 10–25%
  • Memanggil f(arg) C(arg) 20%
  • Muat len cetak variabel global [1]
  • Muat atribut o.attr [3]
  • Memuat metode untuk panggilan o.meth() 10–20%
  • Menyimpan atribut o.attr = z 2% di pyperformance
  • Urutan Buka Kemasan *seq8%

Cari informasi lebih lanjut