Jadual Kandungan
Ringkasan
Rumah pembangunan bahagian belakang Tutorial Python Menyahmistikan kata kunci dengan dalam Python

Menyahmistikan kata kunci dengan dalam Python

Apr 14, 2023 am 11:31 AM
python kod with

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")
Salin selepas log masuk

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()
Salin selepas log masuk

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()
Salin selepas log masuk

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!')
Salin selepas log masuk

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(...)
Salin selepas log masuk

Cara kedua untuk melaksanakan pengurus konteks adalah melalui penghias, seperti berikut:

  1. Anda mengimport pengurus konteks dari contextlib
  2. Anda menulis fungsi untuk melaksanakan pernyataan dengan yang anda mahukan.
  3. Tambah penghias @contextmanager di atas fungsi.
  4. 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')
Salin selepas log masuk

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")
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Hadidb: Pangkalan data yang ringan dan berskala mendatar di Python Hadidb: Pangkalan data yang ringan dan berskala mendatar di Python Apr 08, 2025 pm 06:12 PM

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.

Kaedah Navicat untuk melihat kata laluan pangkalan data MongoDB Kaedah Navicat untuk melihat kata laluan pangkalan data MongoDB Apr 08, 2025 pm 09:39 PM

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).

Rancangan Python 2 jam: Pendekatan yang realistik Rancangan Python 2 jam: Pendekatan yang realistik Apr 11, 2025 am 12:04 AM

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

Bagaimana untuk mengoptimumkan prestasi MySQL untuk aplikasi beban tinggi? Bagaimana untuk mengoptimumkan prestasi MySQL untuk aplikasi beban tinggi? Apr 08, 2025 pm 06:03 PM

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: meneroka aplikasi utamanya Python: meneroka aplikasi utamanya Apr 10, 2025 am 09:41 AM

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.

Cara Menggunakan AWS Glue Crawler dengan Amazon Athena Cara Menggunakan AWS Glue Crawler dengan Amazon Athena Apr 09, 2025 pm 03:09 PM

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.

Bolehkah mysql menyambung ke pelayan SQL Bolehkah mysql menyambung ke pelayan SQL Apr 08, 2025 pm 05:54 PM

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.

Cara memulakan pelayan dengan redis Cara memulakan pelayan dengan redis Apr 10, 2025 pm 08:12 PM

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.

See all articles