Rumah >pembangunan bahagian belakang >Tutorial Python >Ciri baharu terbaik dan pembetulan ciri dalam Python 3.11
Artikel ini membawa anda pengetahuan yang berkaitan tentang python, yang terutamanya memperkenalkan ciri baharu terbaik dan pembetulan fungsi dalam versi 3.11 Berikut ialah ciri baharu yang paling penting dalam Python 3.11 Gambaran keseluruhan pembangun Python dan mereka kepentingan kepada pembangun Python Mari kita lihat mereka di bawah.
Pembelajaran yang disyorkan: tutorial video python
Bahasa pengaturcaraan Python mengeluarkan versi baharu setiap tahun dan versi terkunci fungsi telah dikeluarkan pada separuh pertama tahun versi beta, dan versi akhir akan dikeluarkan pada penghujung tahun. Set ciri Python 3.11 baru sahaja dimuktamadkan, dan versi beta tersedia untuk ujian. Pembangun digalakkan untuk mencuba versi terbaharu ini pada kod bukan pengeluaran untuk mengesahkan bahawa ia tidak bercanggah dengan program anda dan untuk memahami sama ada kod anda akan mendapat manfaat daripada peningkatan prestasinya.
Berikut ialah gambaran keseluruhan ciri baharu yang paling penting dalam Python 3.11 dan maksudnya untuk pembangun Python.
Terdapat banyak peningkatan prestasi individu dalam Python 3.11, tetapi yang terbesar ialah penterjemah adaptif khusus. Memandangkan jenis objek jarang berubah, penterjemah kini cuba menganalisis kod berjalan dan menggantikan kod bait biasa dengan jenis kod bait tertentu. Contohnya, operasi binari (penambahan, penolakan, dll.) boleh digantikan dengan versi khusus untuk integer, titik terapung dan rentetan.
Dalam Python 3.11, panggilan fungsi Python juga memerlukan kurang overhed. Bingkai tindanan untuk panggilan fungsi kini menggunakan kurang memori dan direka bentuk untuk menjadi lebih cekap. Selain itu, walaupun panggilan rekursif tidak dioptimumkan ekor (yang mungkin tidak mungkin dalam Python pula), ia lebih cekap daripada versi sebelumnya. Jurubahasa Python itu sendiri juga bermula lebih cepat, dan modul teras yang diperlukan oleh masa jalan Python disimpan dan dimuatkan dengan lebih cekap.
Menurut suite penanda aras Python rasmi, Python 3.11 berjalan kira-kira 1.25 kali lebih pantas daripada versi 3.10. Ambil perhatian bahawa kelajuan ini ialah ukuran keseluruhan: sesetengah perkara adalah lebih pantas, tetapi banyak perkara lain hanya lebih laju sedikit atau lebih kurang sama. Namun, bahagian terbaik tentang penambahbaikan ini ialah ia percuma. Anda tidak perlu membuat sebarang perubahan kod pada program Python anda untuk memanfaatkan kelajuan 3.11.
Satu lagi ciri yang sangat berguna dalam 3.11 ialah mesej ralat yang lebih terperinci. Python 3.10 sudah mempunyai pelaporan ralat yang lebih baik terima kasih kepada penghurai baharu dalam penterjemah. Sekarang, Python 3.11 memanjangkan ini, memberikan maklum balas terperinci mengenai bahagian tertentu ungkapan tertentu yang menyebabkan ralat.
Fikirkan tentang kod berikut yang menimbulkan ralat:
x = [1,2,3] z = x[1][0]
Dalam Python 3.10 kita mendapat mesej ralat berikut, yang tidak begitu membantu:
File "C:\Python311\code.py", line 2, in <module> z = x[1][0] TypeError: 'int' object is not subscriptable
Daripada meminta kami mengetahui int mana kod yang tidak boleh dikompilasi, jejak ralat dalam Python 3.11 menunjukkan bahagian tepat baris yang menghasilkan ralat:
File "C:\Python311\code.py", line 2, in <module> z = x[1][0] ~~~~^^^ TypeError: 'int' object is not subscriptable
Sekarang agak jelas di mana masalahnya.
Mekanisme pengendalian ralat Python telah memperoleh banyak ciri baharu dalam Python 3.11:
1 Gunakan sintaks kecuali* baharu dan jenis pengecualian ExceptionGroup baharu Boleh kendali pelbagai masalah pengecualian. Ini membolehkan pengendalian elegan masalah yang mungkin menimbulkan berbilang ralat secara serentak, seperti semasa berurusan dengan kaedah tak segerak atau serentak, atau apabila mengendalikan berbilang kegagalan semasa mencuba semula operasi.
2. Pengecualian "kos sifar": Kini tiada penggunaan memori untuk program melainkan pengecualian sebenarnya dilemparkan. Ini bermakna laluan lalai untuk mencuba/kecuali blok adalah lebih pantas dan menggunakan kurang memori.
3. Masa yang diperlukan untuk menangkap pengecualian dikurangkan sebanyak kira-kira 10%.
4. Pengecualian boleh dipertingkatkan melalui ulasan kontekstual untuk memisahkan pengecualian daripada blok kod.
Ciri pembayang jenis Python menjadikan asas kod yang lebih besar lebih mudah untuk diurus dan dianalisis, dan sejak Python 3.5, prestasi pembayang jenis telah meningkat dengan ketara dengan setiap Peningkatan semakan. Python 3.11 memperkenalkan beberapa petunjuk jenis baharu.
Kaedah kelas memerlukan pengisytiharan yang malas dan terperinci sebelum mengembalikan jenis mereka sendiri untuk berkuat kuasa. Jenis .Corak kendiri memudahkan untuk mengisytiharkan nilai pulangan kaedah kelas. Anda boleh memperoleh hasil yang berguna dan boleh diramal daripada alat analisis kaedah ini.
Sebelum ini, anotasi taip tidak dapat mentakrifkan bahawa pembolehubah yang diberikan mestilah literal rentetan, iaitu rentetan yang ditakrifkan dalam kod sumber. jenis baru. Anotasi LiteralString membetulkan masalah ini. Menggunakan anotasi baharu, linters boleh menguji sama ada pembolehubah ialah rentetan yang ditakrifkan dalam sumber atau rentetan baharu yang hanya terdiri daripada rentetan yang ditakrifkan dalam sumber.
Sejak Python 3.7, kelas data memudahkan untuk mentakrifkan kelas yang mengikut corak biasa untuk mencipta sifat berdasarkan parameter permulaan. Tetapi tiada mekanisme standard yang membenarkan sesuatu yang berkelakuan seperti kelas data (tetapi bukan kelas data itu sendiri) menggunakan anotasi jenis untuk mengisytiharkan kelakuannya. Transformasi kelas data menambah pengubah type.dataclass_transform untuk menggesa pengkompil bahawa fungsi, kelas atau metaclass tertentu berkelakuan seperti kelas data.
Cadangan generik awal termasuk TypeVar, cara untuk menentukan fungsi generik menggunakan jenis parameter tunggal, contohnya, jenis T boleh int atau float . Python 3.11 menambah TypeVarTuple, atau "generik pembolehubah", yang boleh anda gunakan untuk menentukan ruang letak, bukan sahaja jenis, tetapi julat jenis, yang diwakili sebagai tupel. Ini amat berguna dalam perpustakaan seperti NumPy, di mana anda boleh menyemak ralat lebih awal, seperti sama ada tatasusunan yang disediakan adalah dalam bentuk yang betul.
Python menggunakan TOML atau bahasa minimalis eksplisit Tom sebagai format konfigurasi (seperti pyproject.TOML), tetapi tidak mendedahkan keupayaan untuk membaca format TOML fail ialah modul perpustakaan standard. Python 3.11 menambah tomllib untuk menyelesaikan masalah ini. Ambil perhatian bahawa tomllib tidak membuat atau menulis fail TOML untuk ini, anda memerlukan modul pihak ketiga seperti Tomli-W atau TOML Kit.
Modul semula Python digunakan untuk mengendalikan ungkapan biasa dan ia tidak mempunyai beberapa ciri yang terdapat dalam pelaksanaan ungkapan biasa yang lain. Satu ialah pengelompokan atom, yang disokong secara meluas dalam bahasa lain. Python 3.11 kini menyokong corak ini menggunakan sintaks biasa untuk pengelompokan atom (cth., (?>…)
Enjin padanan corak modul semula juga telah ditulis semula sedikit dan berjalan kira-kira 10% lebih pantas. .
PEP 594 memulakan usaha untuk mengalih keluar banyak sel yang dipanggil mati, atau modul lapuk atau tidak diselenggara, daripada perpustakaan standard Python Python 3.11, perpustakaan ini ditandakan sebagai tidak digunakan tetapi belum dialih keluar sepenuhnya dalam Python 3.13
Terdapat banyak. penambahbaikan yang lebih kecil dalam Python 3.11:
1. Objek Python memerlukan lebih sedikit memori kerana ruang nama mereka kini dibuat dengan malas dan kamus ruang nama mereka kini berkongsi kunci apabila boleh
2 tidak lagi perlu menyimpan cincang, dengan itu mengurangkan saiz kamus dan membolehkan kecekapan cache yang lebih besar
3 The Python runtime menggunakan Jurubahasa Python kini secara eksperimen menyokong kompilasi untuk WebAssembly seperti PyScript, yang membenarkan masa jalan Python yang disusun oleh WASM untuk dijalankan dalam pembelajaran yang disyorkan:
tutorial video pythonAtas ialah kandungan terperinci Ciri baharu terbaik dan pembetulan ciri dalam Python 3.11. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!