Python 3.11 tiba dengan peningkatan prestasi, reka bentuk semula cache dan banyak lagi

Python

Python ialah bahasa pengaturcaraan tafsiran peringkat tinggi yang falsafahnya menekankan kebolehbacaan kodnya.

Selepas setahun pembangunan, versi baharu bahasa pengaturcaraan Python, 3.11 , telah dikeluarkan. Cabang baharu ini akan disokong selama satu setengah tahun, dan selepas itu tampalan akan dikeluarkan selama tiga setengah tahun lagi untuk menangani kelemahan.

Pada masa yang sama, ujian alfa bagi cabang Python 3.12 bermula (mengikut jadual pembangunan baharu, kerja pada cabang baharu bermula lima bulan sebelum pelancaran cabang sebelumnya dan mencapai peringkat ujian alfa pada masa versi seterusnya).

Cawangan Python 3.12 akan berada dalam keluaran alfa selama tujuh bulan, di mana ciri baharu akan ditambah dan pepijat diperbaiki. Selepas itu, ujian beta akan berlangsung selama tiga bulan, di mana penambahan ciri baharu akan dilarang dan perhatian penuh akan diberikan kepada pembetulan pepijat. Dua bulan terakhir sebelum pelancaran, cawangan itu akan berada di peringkat calon pelancaran, di mana penstabilan akhir akan berlaku.

Ciri baharu utama Python 3.11

Versi baharu ini merangkumi kerja-kerja penting untuk mengoptimumkan prestasi . Cawangan baharu ini menggabungkan perubahan yang berkaitan dengan pecutan dan penggunaan sebaris panggilan fungsi , penggunaan penterjemah pantas untuk operasi biasa dan pengoptimuman yang dibangunkan oleh projek Cinder dan HotPy. Bergantung pada beban kerja, kelajuan pelaksanaan kod meningkat antara 10% dan 60%. Secara purata, prestasi pada suit ujian pyperformance meningkat sebanyak 25%.

Mekanisme caching bytecode telah direka bentuk semula , mengurangkan masa permulaan penterjemah sebanyak 10-15%. Objek yang mengandungi bytecode kini diperuntukkan secara statik oleh penterjemah, menghapuskan langkah-langkah penyahkodan bytecode yang diambil daripada cache dan menukar objek yang mengandungi bytecode untuk penempatan dinamik dalam memori.

Sokongan untuk kumpulan pengecualian telah ditambah , memberikan program keupayaan untuk menjana dan memproses berbilang pengecualian berbeza secara serentak. Jenis pengecualian baharu, ExceptionGroup dan BaseExceptionGroup, dicadangkan untuk mengelompokkan dan menggabungkan berbilang pengecualian, dan ungkapan "except*" telah ditambah pada pengecualian berasingan dalam kumpulan.

Jenis LiteralString khas telah ditambah yang hanya boleh merangkumi rentetan literal yang serasi dengan jenis LiteralString (iaitu, rentetan kosong dan rentetan jenis LiteralString, tetapi bukan rentetan jenis str yang sembarangan atau gabungan). Jenis LiteralString boleh digunakan untuk mengehadkan penghantaran argumen rentetan kepada fungsi, mencegah penggantian bahagian rentetan yang boleh timbul secara sembarangan di mana kerentanan boleh timbul, contohnya, apabila menjana rentetan untuk pertanyaan SQL atau arahan shell.

Di samping itu, keupayaan untuk menandakan elemen individu kamus yang ditaip (TypedDict) dengan tanda Wajib dan Tidak Wajib juga disediakan untuk menentukan medan wajib dan pilihan (secara lalai, semua medan yang diisytiharkan adalah wajib jika parameter jumlah tidak ditetapkan kepada Palsu).

Penghias kelas, kaedah dan fungsi @dataclass_transform telah ditambah ; apabila ditentukan, pemeriksa jenis statik melayan objek seolah-olah ia menggunakan penghias @dataclasses.dataclass.

Perubahan lain yang menonjol dalam versi baru ini:

  • Menambahkan keupayaan untuk menggunakan pengkuantiti kumpulan atom ((?>…)) dan pengkuantiti cemburu (posesif) (*+, ++, ?+, {m,n}+) dalam ungkapan biasa.
  • Jenis TypeVarTuple telah ditambah, yang membenarkan penggunaan generik berubah-ubah, tidak seperti TypeVar, yang merangkumi bukan satu jenis, tetapi bilangan jenis yang sewenang-wenangnya.
  • Pustaka standard termasuk modul tomllib dengan fungsi untuk menghuraikan format TOML.
  • Kaedah add_note() telah ditambahkan pada kelas BaseException, yang membenarkan nota teks dilampirkan pada pengecualian, contohnya untuk menambah maklumat kontekstual yang tidak tersedia pada masa pengecualian dilemparkan.
  • Diri jenis khas telah ditambahkan untuk mewakili kelas persendirian semasa. Diri boleh digunakan untuk menganotasi kaedah yang mengembalikan contoh kelas anda dengan cara yang lebih mudah daripada menggunakan TypeVar.
  • Menambahkan pilihan baris arahan "-P" dan pembolehubah persekitaran PYTHONSAFEPATH untuk melumpuhkan sambungan automatik laluan fail yang berpotensi tidak selamat ke sys.path.
  • Utiliti py.exe untuk platform Windows telah dipertingkatkan dengan ketara untuk menyokong sintaks "-V:". / " sebagai tambahan kepada "- . ».
  • Banyak makro C API telah ditukar kepada fungsi sebaris biasa atau statik
  • Modul uu, cgi, paip, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev dan sunau telah ditamatkan dan akan dialih keluar daripada Python. 3.13 keluaran.
  • Mengalih keluar fungsi PyUnicode_Encode*.
  • Kelas TaskGroup telah ditambahkan pada modul asyncio dengan pelaksanaan pengurus konteks tak segerak yang menunggu kumpulan tugas selesai.
  • Menambah tugas pada kumpulan dilakukan menggunakan kaedah create_task().

Akhir sekali, jika anda berminat untuk mengetahui lebih lanjut tentang perkara ini , anda boleh mendapatkan butiran lanjut di pautan berikut.


Tambahkan sebagai sumber pilihan dalam Google