Python 3.9¶
Python 3.9.0 (final) ได้เปิดตัวเมื่อวันที่ 5 ตุลาคม 2020 ฟีเจอร์สำหรับ 3.9 ถูกกำหนดไว้ใน PEP 596 และคำอธิบายโดยละเอียดของการเปลี่ยนแปลงสามารถดูได้ใน What's New in Python 3.9
ฟีเจอร์ | สถานะ | |
การเข้าถึงสถานะโมดูลอย่างรวดเร็วจากเมธอดของประเภท C extension | ไม่เกี่ยวข้อง | |
เพิ่ม union operators ให้กับ dict | สมบูรณ์ [1] | |
Type hinting generics ใน standard collections | ||
คำอธิบาย annotation ของฟังก์ชันและตัวแปรแบบยืดหยุ่น | ||
CPython ใช้รอบการเปิดตัวประจำปี แทนที่จะเป็นประจำปี มุ่งหมายให้มีรอบการเปิดตัวสองเดือน | ไม่เกี่ยวข้อง | |
ผ่อนคลายข้อจำกัดไวยากรณ์สำหรับ decorator | ||
ฐานข้อมูล IANA Time Zone ขณะนี้อยู่ใน standard library ในโมดูล zoneinfo | ||
เมธอด String สำหรับลบ prefix และ suffix | ||
CPython ขณะนี้ใช้ parser ใหม่ที่อิงกับ PEG | ไม่เกี่ยวข้อง |
การเปลี่ยนแปลงภาษาอื่นๆ:
__import__() ขณะนี้แสดง ImportError แทน ValueError | สมบูรณ์ |
Python ขณะนี้รับเส้นทางสัมบูรณ์ของชื่อไฟล์สคริปต์ที่ระบุในบรรทัดคำสั่ง (เช่น: python3 script.py): attribute __file__ ของโมดูล __main__ กลายเป็นเส้นทางสัมบูรณ์แทนที่จะเป็นเส้นทางสัมพัทธ์ | |
ตามค่าเริ่มต้นเพื่อประสิทธิภาพสูงสุด อาร์กิวเมนต์ errors จะถูกตรวจสอบเฉพาะในข้อผิดพลาดการเข้ารหัส/ถอดรหัสครั้งแรก และอาร์กิวเมนต์ encoding บางครั้งจะถูกละเว้นสำหรับสตริงว่าง | |
"".replace("", s, n) ขณะนี้ส่งคืน s แทนสตริงว่างสำหรับ n ที่ไม่ใช่ศูนย์ทั้งหมด ซึ่งขณะนี้สอดคล้องกับ "".replace("", s) | |
ขณะนี้นิพจน์ที่ถูกต้องใดๆ สามารถใช้เป็น decorator ได้ ก่อนหน้านี้ไวยากรณ์มีข้อจำกัดมากกว่า | |
การรัน aclose() / asend() / athrow() แบบขนานกันขณะนี้ถูกห้าม และ ag_running ขณะนี้สะท้อนสถานะการรันจริงของ async generator | |
ข้อผิดพลาดที่ไม่คาดคิดในการเรียกเมธอด __iter__ ไม่ถูกปิดบังด้วย TypeError ในตัวดำเนินการ in และฟังก์ชัน contains(), indexOf() และ countOf() ของโมดูล operator อีกต่อไป | |
นิพจน์ lambda ที่ไม่มีวงเล็บไม่สามารถเป็นส่วนนิพจน์ใน clause if ใน comprehensions และ generator expressions อีกต่อไป |
การเปลี่ยนแปลงในโมดูลบิวต์อิน:
เนื่องจากข้อกังวลด้านความปลอดภัยที่สำคัญ พารามิเตอร์ reuse_address ของ asyncio.loop.create_datagram_endpoint() ไม่ได้รับการรองรับอีกต่อไป | |
เพิ่ม coroutine ใหม่ shutdown_default_executor() ที่กำหนดการ shutdown สำหรับ default executor ที่รอให้ ThreadPoolExecutor ปิดการทำงาน นอกจากนี้ asyncio.run() ได้รับการอัปเดตให้ใช้ coroutine ใหม่นี้ | |
เพิ่ม asyncio.PidfdChildWatcher ซึ่งเป็นการนำ child watcher เฉพาะ Linux ไปใช้งานที่ poll file descriptors ของกระบวนการ | |
เพิ่ม coroutine ใหม่ asyncio.to_thread() | |
เมื่อยกเลิกงานเนื่องจาก timeout asyncio.wait_for() จะรอจนกว่าการยกเลิกจะเสร็จสมบูรณ์ในกรณีที่ timeout <= 0 ด้วย เช่นเดียวกับที่ทำกับ timeout ที่เป็นบวก | |
asyncio ขณะนี้แสดง TyperError เมื่อเรียกเมธอดที่ไม่เข้ากันกับ socket ssl.SSLSocket | |
Garbage collection ไม่บล็อกบนอ็อบเจ็กต์ที่ฟื้นคืนชีพ | |
เพิ่มฟังก์ชันใหม่ gc.is_finalized() เพื่อตรวจสอบว่าอ็อบเจ็กต์ได้รับการ finalized โดย garbage collector แล้วหรือไม่ | |
ขยายฟังก์ชัน math.gcd() ให้รองรับหลายอาร์กิวเมนต์ ก่อนหน้านี้รองรับเพียงสองอาร์กิวเมนต์ | |
เพิ่ม math.lcm(): ส่งคืนตัวคูณร่วมน้อยของอาร์กิวเมนต์ที่ระบุ | |
เพิ่ม math.nextafter(): ส่งคืนค่า floating-point ถัดไปหลังจาก x ในทิศทางของ y | |
เพิ่ม math.ulp(): ส่งคืนค่าของบิตที่มีนัยสำคัญน้อยที่สุดของ float | |
เปิดเผย os.pidfd_open() และ os.P_PIDFD เฉพาะ Linux | |
ฟังก์ชัน os.unsetenv() ขณะนี้พร้อมใช้งานบน Windows ด้วย | สมบูรณ์ |
ฟังก์ชัน os.putenv() และ os.unsetenv() ขณะนี้พร้อมใช้งานเสมอ | สมบูรณ์ |
เพิ่มฟังก์ชัน os.waitstatus_to_exitcode(): แปลง wait status เป็น exit code | |
เพิ่มเมธอด random.Random.randbytes ใหม่: สร้างไบต์แบบสุ่ม | |
เพิ่ม attribute ใหม่ sys.platlibdir: ชื่อของไดเรกทอรี library เฉพาะแพลตฟอร์ม | |
ก่อนหน้านี้ sys.stderr เป็นแบบ block-buffered เมื่อไม่ใช่ interactive ขณะนี้ stderr ค่าเริ่มต้นจะเป็นแบบ line-buffered เสมอ | |
หมายเหตุ