Python 3.9¶
Python 3.9.0 (final) dirilis pada 5 Oktober 2020. Fitur-fitur untuk 3.9 didefinisikan dalam PEP 596 dan deskripsi terperinci tentang perubahan dapat ditemukan di What's New in Python 3.9
Fitur |
Status |
|
Akses cepat ke status modul dari metode tipe ekstensi C |
Tidak relevan |
|
Operator union ditambahkan ke dict |
Selesai [1] |
|
Tipe hint generik dalam koleksi standar |
||
Anotasi fungsi dan variabel yang fleksibel |
||
CPython mengadopsi siklus rilis tahunan. Alih-alih tahunan, menargetkan siklus rilis dua bulan |
Tidak relevan |
|
Pelonggaran pembatasan tata bahasa pada dekorator |
||
Database Zona Waktu IANA kini tersedia di pustaka standar dalam modul zoneinfo |
||
Metode string untuk menghapus awalan dan akhiran |
||
CPython kini menggunakan parser baru berbasis PEG |
Tidak relevan |
Perubahan Bahasa Lainnya:
__import__() kini memunculkan ImportError daripada ValueError |
Selesai |
Python kini mendapatkan path absolut dari nama file skrip yang ditentukan pada baris perintah (misalnya: python3 script.py): atribut __file__ dari modul __main__ menjadi path absolut, bukan path relatif |
|
Secara default, demi performa terbaik, argumen errors hanya diperiksa pada kesalahan enkoding/dekoding pertama dan argumen encoding terkadang diabaikan untuk string kosong |
|
"".replace("", s, n) kini mengembalikan s daripada string kosong untuk semua n yang bukan nol. Kini konsisten dengan "".replace("", s) |
|
Ekspresi valid apa pun kini dapat digunakan sebagai dekorator. Sebelumnya, tata bahasa jauh lebih terbatas |
|
Penjalanan paralel aclose() / asend() / athrow() kini dilarang, dan ag_running kini mencerminkan status berjalan aktual dari generator async |
|
Kesalahan tak terduga dalam memanggil metode __iter__ tidak lagi ditutupi oleh TypeError pada operator in dan fungsi contains(), indexOf() dan countOf() dari modul operator |
|
Ekspresi lambda yang tidak dikurung tidak lagi dapat menjadi bagian ekspresi dalam klausa if di comprehension dan ekspresi generator |
Perubahan pada modul built-in:
Karena masalah keamanan yang signifikan, parameter reuse_address dari asyncio.loop.create_datagram_endpoint() tidak lagi didukung |
|
Ditambahkan coroutine baru shutdown_default_executor() yang menjadwalkan shutdown untuk executor default yang menunggu ThreadPoolExecutor selesai menutup. Juga, asyncio.run() telah diperbarui untuk menggunakan coroutine baru. |
|
Ditambahkan asyncio.PidfdChildWatcher, implementasi child watcher khusus Linux yang mem-poll deskriptor file proses |
|
ditambahkan coroutine asyncio.to_thread() baru |
|
Saat membatalkan task karena timeout, asyncio.wait_for() kini akan menunggu hingga pembatalan selesai juga dalam kasus ketika timeout <= 0, seperti yang dilakukan dengan timeout positif |
|
asyncio kini memunculkan TyperError saat memanggil metode yang tidak kompatibel dengan socket ssl.SSLSocket |
|
Pengumpulan sampah tidak memblokir pada objek yang diresureksikan |
|
Ditambahkan fungsi baru gc.is_finalized() untuk memeriksa apakah suatu objek telah difinalisasi oleh pengumpul sampah |
|
Memperluas fungsi math.gcd() untuk menangani beberapa argumen. Sebelumnya, hanya mendukung dua argumen |
|
Ditambahkan math.lcm(): mengembalikan kelipatan persekutuan terkecil dari argumen yang ditentukan |
|
Ditambahkan math.nextafter(): mengembalikan nilai floating-point berikutnya setelah x menuju y |
|
Ditambahkan math.ulp(): mengembalikan nilai bit paling tidak signifikan dari sebuah float |
|
Mengekspos os.pidfd_open() dan os.P_PIDFD khusus Linux |
|
Fungsi os.unsetenv() kini juga tersedia di Windows |
Selesai |
Fungsi os.putenv() dan os.unsetenv() kini selalu tersedia |
Selesai |
Ditambahkan fungsi os.waitstatus_to_exitcode(): mengonversi status tunggu ke kode keluar |
|
Ditambahkan metode random.Random.randbytes baru: menghasilkan byte acak |
|
Ditambahkan atribut sys.platlibdir baru: nama direktori pustaka khusus platform |
|
Sebelumnya, sys.stderr di-buffer-blok ketika non-interaktif. Kini stderr secara default selalu di-buffer-baris |
|
Catatan