Apa yang Baru di Python 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
printlen[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

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































