มีอะไรใหม่ใน Python 3.11.1
Python 3.11.2 เป็นเวอร์ชันล่าสุดของภาษาโปรแกรมที่ได้รับความนิยม และมีคุณสมบัติและการปรับปรุงใหม่ๆ มากมาย ในบทความบล็อกนี้ เราจะดูคุณลักษณะใหม่บางอย่างใน Python 3.11 และให้โค้ดตัวอย่างเพื่อให้คุณเริ่มต้นได้
สรุป
Python 3.11 เร็วกว่า 3.10 ถึง 10–60% วัดความเร็ว 1.25x ในชุดเกณฑ์มาตรฐานมาตรฐาน มีexception, speed, syntaxการปรับปรุง
ข้อยกเว้น
จากนี้ไป คุณสามารถเพิ่มข้อยกเว้นได้หลายรายการโดยใช้กลุ่มข้อยกเว้น
PEP 654แนะนำคุณสมบัติภาษาที่ช่วยให้โปรแกรมสามารถยกระดับและจัดการกับข้อยกเว้นที่ไม่เกี่ยวข้องหลายรายการได้พร้อมกัน ประเภทในตัวExceptionGroupและBaseExceptionGroupทำให้สามารถจัดกลุ่มข้อยกเว้นและยกเข้าด้วยกันได้ และexcept*ไวยากรณ์ใหม่จะสรุปexceptให้ตรงกับกลุ่มย่อยของกลุ่มข้อยกเว้น
https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep654
นอกจากนี้ คุณสามารถเพิ่มบันทึกลงในข้อยกเว้นของคุณโดยใช้สิ่งนี้ คุณสามารถให้ข้อมูลเพิ่มเติมได้อย่างง่ายดาย คุณต้องจับข้อยกเว้นโดยใช้try exceptจากนั้นคุณต้องเพิ่มบันทึก และเพิ่มอีกครั้ง
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
แบบใหม่ก็เพิ่มSelfปกติselfครับ
คุณสมบัติใหม่ที่เกี่ยวข้องกับคำแนะนำประเภท
ส่วนนี้ครอบคลุมการเปลี่ยนแปลงสำคัญที่ส่งผลต่อ คำแนะนำประเภท PEP 484และtypingโมดูล
นี่คือตัวอย่าง:
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>
RequiredและNotRequiredให้วิธีที่ตรงไปตรงมาในการทำเครื่องหมายว่าTypedDictต้องมี รายการแต่ละรายการใน a ก่อนหน้านี้ทำได้โดยใช้การสืบทอดเท่านั้น
ฟิลด์ทั้งหมดยังคงต้องกรอกโดยค่าเริ่มต้น เว้นแต่ พารามิเตอร์ ผลรวมจะถูกตั้งค่าเป็นFalseซึ่งในกรณีนี้ฟิลด์ทั้งหมดจะยังไม่บังคับตามค่าเริ่มต้น ตัวอย่างเช่น ต่อไปนี้ระบุ a TypedDictด้วยหนึ่งคีย์ที่จำเป็นและหนึ่งคีย์ที่ไม่จำเป็น:
การสร้างพจนานุกรมพิเศษเป็นความสามารถที่มีประสิทธิภาพหากคุณต้องการสร้างห้องสมุดและลดข้อผิดพลาดที่อาจเกิดขึ้นจากผู้ใช้
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
ดูที่นี่สำหรับข้อมูลเพิ่มเติม
เร่งความเร็วการทำงาน
- การดำเนินการไบนารี
x+x; x*x; x-x;10% - สมัครสมาชิก
a[i]10–25% - จัดเก็บตัวห้อย
a[i] = z10–25% - โทร
f(arg)C(arg)20% - โหลดตัวแปรส่วนกลาง
printlen[1 ] - โหลดแอตทริบิวต์
o.attr[ 3] - โหลดวิธีการโทร
o.meth()10–20% - เก็บแอตทริบิวต์
o.attr = z2% ในประสิทธิภาพ py - แกะลำดับ
*seq8%
แหล่งที่มา
https://docs.python.org/3/whatsnew/3.11.html





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)