Python 3.8¶
Python 3.8.0 (final) dirilis pada 14 Oktober 2019. Fitur-fitur untuk 3.8 didefinisikan dalam PEP 569 dan deskripsi terperinci tentang perubahan dapat ditemukan di What's New in Python 3.8.
Fitur |
Status |
|
Argumen hanya-posisional |
||
Ekspresi Penugasan |
Selesai |
|
Protokol Pickle 5 dengan data out-of-band |
||
Hook audit runtime |
||
Konfigurasi Inisialisasi Python |
||
Vectorcall: protokol pemanggilan cepat untuk CPython |
||
Lain-lain |
||
f-string mendukung = untuk ekspresi self-documenting dan debugging |
Selesai |
|
Perubahan Bahasa Lainnya:
Pernyataan continue tidak diizinkan dalam klausa finally karena masalah pada implementasi. Dalam Python 3.8 pembatasan ini dicabut |
Selesai |
Tipe bool, int, dan fractions.Fraction kini memiliki metode as_integer_ratio() seperti yang ada di float dan decimal.Decimal |
|
Konstruktor int, float dan complex kini akan menggunakan metode khusus __index__(), jika tersedia dan metode yang bersangkutan __int__(), __float__() atau __complex__() tidak tersedia |
|
Menambahkan dukungan escape N{name} dalam ekspresi reguler |
|
Dict dan dictview kini dapat diiterasi dalam urutan penyisipan terbalik menggunakan reversed() |
|
Sintaks yang diizinkan untuk nama kata kunci dalam pemanggilan fungsi dibatasi lebih lanjut. Khususnya, f((keyword)=arg) tidak lagi diizinkan |
|
Pembongkaran iterable yang digeneralisasi dalam pernyataan yield dan return tidak lagi memerlukan tanda kurung pembungkus |
|
Ketika koma terlewat dalam kode seperti [(10, 20) (30, 40)], kompilator menampilkan SyntaxWarning dengan saran yang membantu |
|
Operasi aritmetika antara subkelas datetime.date atau datetime.datetime dan objek datetime.timedelta kini mengembalikan instance dari subkelas, bukan kelas dasar |
|
Ketika interpreter Python diinterupsi oleh Ctrl-C (SIGINT) dan pengecualian KeyboardInterrupt yang dihasilkan tidak ditangkap, proses Python kini keluar melalui sinyal SIGINT atau dengan kode keluar yang benar sehingga proses pemanggil dapat mendeteksi bahwa proses tersebut mati karena Ctrl-C |
|
Beberapa gaya pemrograman tingkat lanjut memerlukan pembaruan objek types.CodeType untuk fungsi yang sudah ada |
|
Untuk bilangan bulat, bentuk tiga argumen dari fungsi pow() kini mengizinkan eksponen negatif dalam kasus di mana basis relatif prima terhadap modulus |
|
Dict comprehension telah disinkronkan dengan literal dict sehingga kunci dihitung terlebih dahulu dan nilai kedua |
|
Metode object.__reduce__() kini dapat mengembalikan tuple dari dua hingga enam elemen |
Perubahan pada modul built-in:
asyncio.run() telah naik dari API sementara ke stabil |
Selesai |
Menjalankan python -m asyncio meluncurkan REPL async asli |
|
Pengecualian asyncio.CancelledError kini mewarisi dari BaseException daripada Exception dan tidak lagi mewarisi dari concurrent.futures.CancelledError |
Selesai |
Ditambahkan asyncio.Task.get_coro() untuk mendapatkan coroutine yang dibungkus dalam asyncio.Task |
|
Task Asyncio kini dapat diberi nama, baik dengan meneruskan argumen kata kunci name ke asyncio.create_task() atau metode event loop create_task(), maupun dengan memanggil metode set_name() pada objek task |
|
Ditambahkan dukungan Happy Eyeballs ke asyncio.loop.create_connection(). Untuk menentukan perilaku, dua parameter baru telah ditambahkan: happy_eyeballs_delay dan interleave. |
|
get_objects() kini dapat menerima parameter generasi opsional yang menunjukkan generasi untuk mendapatkan objek. (Catatan, meskipun gc adalah built-in, get_objects() tidak diimplementasikan untuk MicroPython) |
|
Ditambahkan fungsi baru math.dist() untuk menghitung jarak Euclidean antara dua titik |
|
Memperluas fungsi math.hypot() untuk menangani beberapa dimensi |
|
Ditambahkan fungsi baru, math.prod(), sebagai fungsi analog untuk sum() yang mengembalikan hasil kali nilai "start" (default: 1) dikali iterable angka |
|
Ditambahkan dua fungsi kombinatorik baru math.perm() dan math.comb() |
|
Ditambahkan fungsi baru math.isqrt() untuk menghitung akar kuadrat bilangan bulat yang akurat tanpa konversi ke floating point |
|
Fungsi math.factorial() tidak lagi menerima argumen yang bukan berupa int |
Selesai |
Menambahkan fungsi sys.unraisablehook() baru yang dapat ditimpa untuk mengontrol cara penanganan "pengecualian yang tidak dapat dimunculkan" |
|