Python 3.9: Apa yang baru dan lebih baik

Python 3.9, yang dikeluarkan hari ini, membawa perubahan yang ketara terhadap kedua-dua ciri bahasa dan bagaimana bahasa itu dikembangkan. Python telah berkembang pesat dalam beberapa tahun kebelakangan, dan penggunaannya meletup di kawasan yang berkembang pesat seperti sains data dan pembelajaran mesin. Projek ini bekerja keras untuk mengikuti semua tuntutan baru. 

Berikut adalah ikhtisar semua ciri baru yang besar di Python 3.9.

Python beralih ke kitaran pelepasan tahunan

Hingga tahap ini, Python telah dikembangkan dan dilancarkan pada irama lapan belas bulan. PEP 602 mengusulkan agar pasukan pengembangan Python mengadopsi kitaran pelepasan tahunan, dan cadangan itu telah diterima. 

Kitaran pelepasan tahunan bermaksud lebih sedikit ciri setiap pelepasan, tetapi ini juga bermaksud maklum balas yang lebih pantas mengenai pengujian ciri, lebih sedikit perubahan yang berpotensi untuk memecahkan setiap pelepasan, dan dengan demikian lebih banyak insentif bagi pengguna dan pengurus distribusi Linux untuk meningkatkan Python lebih kerap. Ini juga bermaksud ciri-ciri baru yang diusulkan pada akhir siklus pengembangan tidak akan memakan waktu lama untuk dilancarkan menjadi rilis baru.

Garis masa baru bermaksud Python 3.9 akan dihantar pada Oktober 2020. Python 3.10 secara rasmi memulakan pembangunan pra-alpha pada 19 Mei 2020, akan memasuki fasa pengembangan alpha ketika Python 3.9 kapal, dan akan dihantar pada Oktober 2021. Pelepasan Python Masa Depan akan mengikuti corak yang sama.

Python menjadi lebih pantas secara lalai

Setiap penyemakan Python menikmati peningkatan prestasi berbanding versi sebelumnya. Python 3.9 melancarkan dua peningkatan besar yang meningkatkan prestasi tanpa memerlukan perubahan pada kod yang ada.

Peningkatan pertama melibatkan penggunaan lebih banyak vectorcallprotokol yang diperkenalkan dalam Python 3.8. vectorcallmembuat banyak panggilan fungsi biasa lebih cepat dengan meminimumkan atau menghilangkan objek sementara yang dibuat untuk panggilan tersebut. Di Python 3.9, beberapa bawaan Python - range, tuple, set, frozenset, list, dict- gunakan secara vectorcalldalaman untuk mempercepat pelaksanaan.

Penambah prestasi besar kedua adalah penghuraian kod sumber Python yang lebih cekap. Penghurai baru untuk jangka masa CPython tidak dirancang untuk menangani masalah prestasi, tetapi untuk menangani ketidakkonsistenan dalaman dalam penghurai asal. Walau bagaimanapun, faedah penting adalah lebih cepat mengurai, terutamanya untuk jumlah kod yang banyak.

Lebih banyak fungsi rentetan dan kamus Python

Python memudahkan untuk memanipulasi jenis data biasa, dan Python 3.9 memperluas kemudahan ini dengan ciri baru untuk rentetan dan kamus. Untuk rentetan, ada kaedah baru untuk membuang awalan dan akhiran, operasi yang telah lama memerlukan banyak kerja manual untuk dilakukan. Untuk kamus, kini ada operator kesatuan, satu untuk menggabungkan dua kamus menjadi kamus baru dan satu untuk mengemas kini kandungan satu kamus dengan kamus lain.

Penghias kehilangan beberapa sekatan

Penghias membiarkan anda membungkus fungsi Python untuk mengubah tingkah laku mereka secara teratur. Sebelum ini, penghias hanya boleh terdiri daripada simbol @, nama (misalnya func) atau nama putus-putus ( func.method) dan pilihan panggilan tunggal ( func.method(arg1, arg2)). Dengan Python 3.9, penghias kini boleh terdiri daripada sebarang ungkapan yang sah.

Salah satu cara lama untuk mengatasi sekatan ini adalah dengan membuat fungsi atau ekspresi lambda yang akan mewakili ungkapan yang lebih kompleks ketika digunakan sebagai penghias. Sekarang apa-apa ungkapan akan dilakukan, dengan syarat menghasilkan sesuatu yang dapat berfungsi sebagai penghias.

Operasi jenis Python baru

Sejak beberapa versi terakhir, Python telah memperluas sokongan untuk petunjuk jenis. Ini terutama untuk kepentingan penyusun dan penyemak kod; jenis tidak dikuatkuasakan pada waktu runtuh di CPython, dan tidak ada rancangan untuk menjadikan Python sebagai bahasa yang ditaip secara statik. Tetapi petunjuk jenis adalah alat yang ampuh untuk memastikan konsistensi dalam pangkalan kode besar, jadi kod Python masih boleh mendapat manfaat daripada mempunyai petunjuk jenis. 

Dua ciri baru untuk petunjuk jenis dan anotasi jenis telah memasuki Python 3.9. Dalam satu, ketik petunjuk untuk kandungan koleksi - contohnya, senarai dan kamus - kini tersedia di Python secara asli. Ini bermaksud anda boleh menggambarkan senarai sebagai list[int] - senarai bilangan bulat - tanpa memerlukan typingperpustakaan untuk melakukannya.

Tambahan kedua untuk mekanisme menaip Python adalah fungsi fleksibel dan anotasi berubah-ubah. Ini membolehkan penggunaan Annotatedjenis untuk menggambarkan jenis menggunakan metadata yang dapat diperiksa lebih awal (dengan alat linting) atau pada waktu runtime. Sebagai contoh, Annotated[int, ctype("char")]dapat digunakan untuk menggambarkan bilangan bulat yang harus dianggap sebagai charjenis dalam C. Secara lalai, Python tidak akan melakukan apa-apa dengan anotasi seperti itu, tetapi dapat digunakan oleh linters kod. 

Penambahbaikan pada dalaman Python

Membersihkan, menyempurnakan, dan memodenkan dalaman Python adalah inisiatif berterusan untuk pembangun Python, dan Python 3.9 mempunyai beberapa perubahan dalam urat itu.

Yang pertama adalah reka bentuk semula cara modul berinteraksi dengan mesin import. Modul sambungan Python, ditulis dalam C, sekarang mungkin menggunakan mekanisme pemuatan baru yang membuatnya berperilaku lebih seperti modul Python biasa ketika diimport. Beberapa modul di perpustakaan standard Python yang baru menyokong tingkah laku ini: _abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref. Mekanisme pemuatan baru bukan sahaja membolehkan modul pelanjutan dikendalikan dengan lebih fleksibel oleh Python, tetapi juga memungkinkan keupayaan baru seperti tingkah laku penyambungan yang maju.

Inisiatif pembersihan kedua adalah ABI dalaman yang stabil untuk CPython, yang dijamin akan bertahan seumur hidup Python 3. Dari segi sejarah, setiap penyemakan utama Python tidak sesuai dengan versi sebelumnya, yang memerlukan modul peluasan dikompilasi ulang untuk setiap versi baru. Mulai sekarang, sebarang modul lanjutan yang menggunakan ABI stabil akan berfungsi di seluruh versi Python. Dengan Python 3.9, modul-modul berikut di perpustakaan standard menggunakan stabil ABI: audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib.

Perubahan lain dalam Python 3.9

  • Perpustakaan standard Python kini menyokong Pangkalan Data Zon Waktu IANA. Pangkalan data tersebut dijaga dengan baik dan digunakan secara meluas, dan mempunyai cara langsung untuk menggunakannya di perpustakaan datetime Python akan menjadi penghemat masa yang besar.
  • Kaedah tali baru membolehkan penghapusan awalan dan akhiran dengan mudah. Ini adalah salah satu senario penggunaan sehari-hari yang biasa yang memerlukan plat pemanas terlalu banyak daripada yang diperlukan. Kaedah baru .removeprefix()dan .removesuffix()kaedah mengembalikan salinan rentetan yang diubah tanpa awalan atau akhiran yang berkenaan, asalkan ada dalam rentetan.

Bagaimana untuk melakukan lebih banyak perkara dengan Python

  • 4 Pemeriksa jenis Python untuk memastikan kod anda bersih
  • Gaya Python: 5 alat untuk membersihkan kod Python anda
  • Cara bekerja dengan jenis data senarai Python
  • Cara mengemas aplikasi Python dengan BeeWare Briefcase
  • Cara menjalankan Anaconda berdampingan dengan Pythons yang lain
  • Cara menggunakan cermin mata hitam Python
  • Mulakan dengan async di Python
  • Cara menggunakan asyncio di Python
  • 3 langkah untuk baik pulih async Python
  • Cara menggunakan PyInstaller untuk membuat Python yang boleh dilaksanakan
  • Tutorial Cython: Cara mempercepat Python
  • Cara memasang Python dengan cara yang bijak
  • Cara menguruskan projek Python dengan Puisi
  • Cara menguruskan projek Python dengan Pipenv
  • Virtualenv dan venv: Persekitaran maya Python dijelaskan
  • Python virtualenv dan venv lakukan dan tidak boleh dilakukan
  • Penjelasan dan proses subtitle Python dijelaskan
  • Cara menggunakan debugger Python
  • Cara menggunakan timeit untuk profil kod Python
  • Cara menggunakan cProfile untuk profil kod Python
  • Cara menukar Python ke JavaScript (dan kembali lagi)