Menyahmistikan kata kunci dengan dalam Python
Ramai di antara kita telah melihat coretan kod ini berulang kali dalam kod Python:
with open('Hi.text', 'w') as f: f.write("Hello, there")
Namun, sesetengah daripada kita tidak tahu dengan Apa itu digunakan untuk, dan mengapa kita perlu menggunakannya di sini. Dalam bacaan ini, anda akan mengetahui hampir semua masalah yang boleh diselesaikan. Mari mulakan!
Pertama, mari kita fikirkan tentang perkara yang perlu kita lakukan tanpa menggunakan kata kunci dengan. Dalam kes ini kita perlu membuka fail terlebih dahulu dan cuba menulis. Tidak kira kejayaan atau kegagalan, lebih baik kita menutupnya pada penghujungnya, jadi kod kita akan kelihatan seperti ini:
f = open('Hi.text', 'w') try: f.write('Hello, there') finally: f.close()
Jadi, apakah kegunaan kata kunci dengan? Ia hanya membantu memendekkan percubaan kami..akhirnya kod kepada satu dengan... kenyataan! Beginilah cara pernyataan with digunakan.
Jadi, apa sebenarnya? Sebenarnya, pernyataan with itu sendiri bukanlah sesuatu yang istimewa dalam Python, ia hanyalah ciri pengurus konteks dalam Python. Pengurus konteks, yang dipetik daripada dokumentasi Python rasmi, ialah satu cara untuk membolehkan anda memperuntukkan dan membebaskan sumber tepat apabila diperlukan, atau secara ringkas: memendekkan coretan kod anda apabila anda melakukan sesuatu pada beberapa sumber, yang bermaksud Kemudian anda boleh menentukan penggunaan daripada dengan kenyataan sendiri!
Bagaimana kita melakukan ini? Nah, ia mudah, anda hanya perlu melaksanakan dua fungsi ajaib: satu dipanggil __enter__ dan satu lagi dipanggil __exit__. Cara pertama ialah menulis kelas yang melaksanakan dua fungsi ini seperti ini:
class My_file: def __init__(self, fname): self.fname = fname def __enter__(self): self.file = open(self.fname, 'w') return self.file def __exit__(self, exc_type, exc_val, exc_trace_back): if self.file: self.file.close()
Di sini, kami telah mencipta kelas Python biasa yang melaksanakan dua fungsi ajaib. Perhatikan tandatangan kedua-dua fungsi ini: __enter__ hanya akan menerima self , manakala __exit__ akan menerima lebih banyak hujah, tiga dalam contoh adalah bentuk standard. Dengan cara ini, kita boleh menggunakannya secara langsung:
with My_file('hello.txt') as f: f.write('hello, world!')
Pernyataan with di sini akan memanggil __init__ untuk membina objek baharu, dan kemudian memanggil kaedah __enter__ akhirnya, ia akan mencetuskan __exit__ sebelum blok kod kaedah selesai. Jadi, persamaan kasar kod di atas adalah seperti berikut:
myfile = My_file('hello.txt') f = myfile.__enter__() f.write('hello, world!') myfile.__exit(...)
Cara kedua untuk melaksanakan pengurus konteks adalah melalui penghias, seperti berikut:
- Anda mengimport pengurus konteks dari contextlib
- Anda menulis fungsi untuk melaksanakan pernyataan dengan yang anda mahukan.
- Tambah penghias @contextmanager di atas fungsi.
- Gunakan dengan your_function!
Mengikut pengenalan di atas, mari kita tulis pengurus konteks penghias!
from contextlib import contextmanager @contextmanager def my_file_open(fname): try: f = open(fname, 'w') yield f finally: print('Closing file') f.close() with file_open('hi.txt') as f: f.write('hello world')
Perkara di atas merangkumi semua asas dengan pernyataan dan pengurus konteks, tetapi jika anda ingin mengetahui lebih lanjut, teruskan...!
Terdapat beberapa alatan berguna dalam contextlib untuk anda gunakan. Yang pertama tutup. penutupan pada dasarnya membungkus blok kod anda dengan fungsi lain yang anda laksanakan sebelum keluar.
@contextmanager def closing(f): try: f.write("Finish writing") finally: f.close() with closing(open("hi.text")): f.write("hello world")
Sebagai contoh, dalam kod di atas, kami boleh terus memanggil close(your_way_of_getting_resource), sejurus sebelum blok kod yang anda tulis di bawah hampir selesai (f.write("hello world")), ia akan Melaksanakan percubaan..akhirnya sekat yang kami takrifkan di atas.
Yang lain ialah menggunakan alat penindas. Kami tahu bahawa dalam banyak kes, jika kami cuba mendapatkan beberapa sumber, kemungkinan ralat seperti FileNotFoundException akan berlaku semasa membuka fail. Dalam sesetengah kes, kami ingin menangkap ralat atau menyekatnya supaya atur cara boleh terus berjalan seperti biasa. menekan adalah salah satu cara kita boleh menyekat amaran. Apa yang anda perlu lakukan ialah memikirkan pengecualian yang anda ingin sekat dan tulis dengan suppress(your_choice_of_exception) dan Python akan mengendalikannya dari sana.
Dalam kes lain, anda mungkin hanya mahu melakukan tindakan tertentu apabila memasuki dengan blok. Dalam kes ini, nullcontext akan memudahkan anda. nullcontext hanya akan mengembalikan apa yang anda takrifkan dalam fungsi __enter__ dan tidak akan melakukan apa-apa lagi. Jika anda berurusan dengan operasi async dalam Python untuk mengakses sumber, penutupan ialah utiliti untuk mengendalikan situasi ini.
Ringkasan
Artikel ini memperkenalkan beberapa konsep asas dan penggunaan pernyataan dengan dan prinsip kerja asasnya. Terdapat banyak lagi perkara yang menarik, lihat dokumentasi contextlib Python. Akhir sekali, saya mengucapkan selamat belajar dan selamat mengekod seperti biasa!
Atas ialah kandungan terperinci Menyahmistikan kata kunci dengan dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Hadidb: Pangkalan data Python yang ringan, tinggi, Hadidb (Hadidb) adalah pangkalan data ringan yang ditulis dalam Python, dengan tahap skalabilitas yang tinggi. Pasang HadIdb menggunakan pemasangan PIP: Pengurusan Pengguna PipInstallHadidB Buat Pengguna: CreateUser () Kaedah untuk membuat pengguna baru. Kaedah pengesahan () mengesahkan identiti pengguna. dariHadidb.OperationImportuserer_Obj = user ("admin", "admin") user_obj.

Tidak mustahil untuk melihat kata laluan MongoDB secara langsung melalui Navicat kerana ia disimpan sebagai nilai hash. Cara mendapatkan kata laluan yang hilang: 1. Tetapkan semula kata laluan; 2. Periksa fail konfigurasi (mungkin mengandungi nilai hash); 3. Semak Kod (boleh kata laluan Hardcode).

Anda boleh mempelajari konsep pengaturcaraan asas dan kemahiran Python dalam masa 2 jam. 1. Belajar Pembolehubah dan Jenis Data, 2.

Panduan Pengoptimuman Prestasi Pangkalan Data MySQL Dalam aplikasi yang berintensifkan sumber, pangkalan data MySQL memainkan peranan penting dan bertanggungjawab untuk menguruskan urus niaga besar-besaran. Walau bagaimanapun, apabila skala aplikasi berkembang, kemunculan prestasi pangkalan data sering menjadi kekangan. Artikel ini akan meneroka satu siri strategi pengoptimuman prestasi MySQL yang berkesan untuk memastikan aplikasi anda tetap cekap dan responsif di bawah beban tinggi. Kami akan menggabungkan kes-kes sebenar untuk menerangkan teknologi utama yang mendalam seperti pengindeksan, pengoptimuman pertanyaan, reka bentuk pangkalan data dan caching. 1. Reka bentuk seni bina pangkalan data dan seni bina pangkalan data yang dioptimumkan adalah asas pengoptimuman prestasi MySQL. Berikut adalah beberapa prinsip teras: Memilih jenis data yang betul dan memilih jenis data terkecil yang memenuhi keperluan bukan sahaja dapat menjimatkan ruang penyimpanan, tetapi juga meningkatkan kelajuan pemprosesan data.

Python digunakan secara meluas dalam bidang pembangunan web, sains data, pembelajaran mesin, automasi dan skrip. 1) Dalam pembangunan web, kerangka Django dan Flask memudahkan proses pembangunan. 2) Dalam bidang sains data dan pembelajaran mesin, numpy, panda, scikit-learn dan perpustakaan tensorflow memberikan sokongan yang kuat. 3) Dari segi automasi dan skrip, Python sesuai untuk tugas -tugas seperti ujian automatik dan pengurusan sistem.

Sebagai profesional data, anda perlu memproses sejumlah besar data dari pelbagai sumber. Ini boleh menimbulkan cabaran kepada pengurusan data dan analisis. Nasib baik, dua perkhidmatan AWS dapat membantu: AWS Glue dan Amazon Athena.

Tidak, MySQL tidak dapat menyambung terus ke SQL Server. Tetapi anda boleh menggunakan kaedah berikut untuk melaksanakan interaksi data: Gunakan middleware: data eksport dari MySQL ke format pertengahan, dan kemudian mengimportnya ke SQL Server melalui middleware. Menggunakan Pangkalan Data Pangkalan Data: Alat perniagaan menyediakan antara muka yang lebih mesra dan ciri -ciri canggih, pada dasarnya masih dilaksanakan melalui middleware.

Langkah -langkah untuk memulakan pelayan Redis termasuk: Pasang Redis mengikut sistem operasi. Mulakan perkhidmatan Redis melalui Redis-server (Linux/macOS) atau redis-server.exe (Windows). Gunakan redis-cli ping (linux/macOS) atau redis-cli.exe ping (windows) perintah untuk memeriksa status perkhidmatan. Gunakan klien Redis, seperti redis-cli, python, atau node.js untuk mengakses pelayan.
