


Bagaimanakah penghias dan pengurus konteks berfungsi dalam Python?
Bagaimanakah penghias dan pengurus konteks berfungsi dalam Python?
Dalam Python, penghias dan pengurus konteks ialah dua konsep dan fungsi yang sangat berguna. Kesemuanya direka untuk memudahkan kod, meningkatkan kebolehbacaan kod dan memudahkan penggunaan semula kod.
1. Penghias
Penghias ialah fungsi khas dalam Python yang digunakan untuk mengubah suai kelakuan sesuatu fungsi. Ia membolehkan kami membungkus atau melanjutkan fungsi asal tanpa mengubah suainya. Penghias digunakan secara meluas dalam banyak rangka kerja dan perpustakaan Python, seperti Flask, Django, dsb., dan juga digunakan secara meluas dalam banyak senario kerja praktikal.
Struktur asas penghias adalah seperti berikut:
def decorator_function(func): def wrapper(*args, **kwargs): # 在函数执行之前的操作 result = func(*args, **kwargs) # 在函数执行之后的操作 return result return wrapper
Fungsi penghias wrapper
, kita boleh melaksanakan operasi yang diperlukan sebelum dan selepas melaksanakan fungsi asal. decorator_function
接收一个函数作为参数,并返回一个新的函数wrapper
。在wrapper
函数中,我们可以在执行原始函数之前和之后执行所需的操作。
下面是一个使用装饰器的例子,来计算函数的执行时间:
import time def calculate_time(func): def wrapper(*args, **kwargs): start_time = time.time() result = func(*args, **kwargs) end_time = time.time() print(f"函数 {func.__name__} 的执行时间为 {end_time - start_time} 秒") return result return wrapper @calculate_time def my_function(): # 执行一些耗时的操作 time.sleep(2) print("函数运行完毕") my_function()
在上述例子中,我们定义了一个calculate_time
的装饰器函数,并通过@calculate_time
将其应用到my_function
函数上。当调用my_function
时,装饰器函数会被调用,记录函数的执行时间并打印出来。
二、上下文管理器
上下文管理器是一种在特定作用域下执行代码的工具,它能够确保在使用资源之前和之后进行正确的初始化和清理操作。上下文管理器通常会使用with
语句来进行调用。
我们可以通过两种方式来定义一个上下文管理器:使用类装饰器或者contextmanager
装饰器。
(1)使用类装饰器方式实现上下文管理器:
class MyContextManager: def __enter__(self): # 初始化资源 print("进入上下文管理器,初始化资源") return self def __exit__(self, exc_type, exc_val, exc_tb): # 清理资源 print("退出上下文管理器,清理资源") with MyContextManager() as my_context: # 使用资源 print("使用上下文管理器中的资源")
在上述例子中,我们定义了一个名为MyContextManager
的上下文管理器类,实现了__enter__
和__exit__
方法。在__enter__
方法中,我们可以进行资源的初始化工作,在__exit__
方法中,我们可以进行资源的清理工作。在with
语句中,我们使用as
关键字指定了一个名称my_context
,这样就可以在with
语句块内部使用该名称来引用上下文管理器。
(2)使用contextmanager
装饰器方式实现上下文管理器:
from contextlib import contextmanager @contextmanager def my_context_manager(): # 初始化资源 print("进入上下文管理器,初始化资源") try: yield finally: # 清理资源 print("退出上下文管理器,清理资源") with my_context_manager(): # 使用资源 print("使用上下文管理器中的资源")
在上述例子中,我们使用contextmanager
装饰器定义了一个生成器函数my_context_manager
。在生成器函数内部,我们可以进行资源的初始化和清理工作。yield
表达式之前的代码块相当于__enter__
方法,yield
表达式之后的代码块相当于__exit__
方法。在with
语句中,我们不需要使用as
rrreee
Dalam contoh di atas, kami mentakrifkan my_function
melalui @calculate_time
. Apabila my_function
dipanggil, fungsi penghias akan dipanggil, masa pelaksanaan fungsi akan direkodkan dan dicetak.
with
. #🎜🎜##🎜🎜#Kita boleh mentakrifkan pengurus konteks dalam dua cara: menggunakan penghias kelas atau penghias pengurus konteks
. #🎜🎜##🎜🎜# (1) Gunakan penghias kelas untuk melaksanakan pengurus konteks: #🎜🎜#rrreee#🎜🎜#Dalam contoh di atas, kami mentakrifkan kelas pengurus konteks bernama MyContextManager
melaksanakan kaedah __enter__
dan __exit__
. Dalam kaedah __enter__
, kita boleh memulakan sumber dan dalam kaedah __exit__
, kita boleh membersihkan sumber. Dalam pernyataan with
, kami menggunakan kata kunci as
untuk menentukan nama my_context
, supaya ia boleh digunakan dalam with pernyataan Nama ini digunakan di dalam blok untuk merujuk kepada pengurus konteks. #🎜🎜##🎜🎜# (2) Gunakan penghias <code>contextmanager
untuk melaksanakan pengurus konteks: #🎜🎜#rrreee#🎜🎜#Dalam contoh di atas, kami menggunakan contextmanager Kod>penghias mentakrifkan fungsi penjana <code>my_context_manager
. Di dalam fungsi penjana, kita boleh memulakan dan membersihkan sumber. Blok kod sebelum ungkapan yield
adalah bersamaan dengan kaedah __enter__
dan blok kod selepas ungkapan yield
adalah bersamaan dengan __keluar__
kaedah. Dalam pernyataan with
, kami tidak perlu menyatakan nama pengurus konteks menggunakan kata kunci as
. #🎜🎜##🎜🎜#Ringkasan: #🎜🎜#Penghias dan pengurus konteks ialah konsep dan ciri yang sangat berguna dalam Python. Penghias boleh digunakan untuk mengubah suai tingkah laku fungsi dan digunakan secara meluas dalam banyak rangka kerja dan perpustakaan. Pengurus konteks boleh melaksanakan kod dalam skop tertentu dan memastikan sumber dimulakan dan dibersihkan dengan betul. Kedua-duanya boleh memudahkan penulisan kod, meningkatkan kebolehbacaan kod dan memudahkan penggunaan semula kod. Di atas ialah pengenalan asas dan kod contoh tentang penghias dan pengurus konteks saya harap ia akan membantu anda. #🎜🎜#Atas ialah kandungan terperinci Bagaimanakah penghias dan pengurus konteks berfungsi 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

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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

Python ialah bahasa pengaturcaraan peringkat tinggi yang digunakan secara meluas dalam bidang seperti sains data dan kecerdasan buatan. Dalam pengaturcaraan Python, kami sering menghadapi ralat fail tidak tertutup, yang boleh menyebabkan ranap program, kehilangan data dan masalah lain, jadi menyelesaikan ralat fail tidak tertutup adalah kemahiran penting dalam pengaturcaraan Python. Artikel ini akan menerangkan cara menyelesaikan ralat tidak tertutup fail Python. 1. Apakah ralat fail tidak tertutup? Dalam Python, anda perlu menggunakan fungsi open() apabila membuka fail.

Ini adalah artikel ketiga kami untuk mengajar anda langkah demi langkah cara melaksanakan pemasa Python. Dua artikel pertama: mengajar anda langkah demi langkah cara melaksanakan pemasa Python, dan menggunakan pengurus konteks untuk melanjutkan pemasa Python, menjadikan kelas Pemasa kami mudah digunakan, cantik dan praktikal. Tetapi kami tidak berpuas hati dengan ini, masih terdapat kes penggunaan yang boleh memudahkannya lagi. Katakan kita perlu menjejaki masa yang dibelanjakan dalam fungsi tertentu dalam pangkalan kod kita. Dengan pengurus konteks, anda pada asasnya mempunyai dua pilihan berbeza: 1. Gunakan Pemasa setiap kali anda memanggil fungsi: dengan Pemasa("some_name"): do_something() Apabila kita berada dalam

Penghias ialah pelaksanaan khusus pengurus konteks python. Artikel ini akan menggambarkan cara menggunakannya melalui contoh penyahpepijatan GPU pytorch. Walaupun ia mungkin tidak berfungsi dalam setiap keadaan, saya dapati ia sangat berguna. Menyahpepijat Isu Kebocoran Memori Terdapat banyak cara untuk menyahpepijat kebocoran memori. Artikel ini akan menunjukkan kaedah yang berguna untuk mengenal pasti baris bermasalah dalam kod anda. Kaedah ini boleh membantu mencari lokasi tertentu dengan cara yang ringkas. Penyahpepijatan manual baris demi baris Jika anda menghadapi masalah, kaedah klasik dan biasa digunakan ialah menggunakan penyahpepijat untuk menyemak baris demi baris, seperti contoh berikut: Cari coretan kod tentang cara mengira jumlah bilangan semua tensor dalam pytorch dalam enjin carian, seperti: tensor -counter-s

Bagaimanakah penghias dan pengurus konteks berfungsi dalam Python? Dalam Python, penghias dan pengurus konteks ialah dua konsep dan ciri yang sangat berguna. Kesemuanya direka untuk memudahkan kod, meningkatkan kebolehbacaan kod dan memudahkan penggunaan semula kod. 1. Penghias Penghias ialah fungsi khas dalam Python yang digunakan untuk mengubah suai kelakuan sesuatu fungsi. Ia membolehkan kami membungkus atau melanjutkan fungsi asal tanpa mengubah suainya. Penghias digunakan secara meluas dalam banyak rangka kerja dan perpustakaan Python, seperti Flask, Dj

Penghias adalah alat yang sangat berguna dalam Python. Penghias ialah fungsi yang mengambil fungsi lain sebagai parameter dan memanjangkan fungsinya tanpa mengubah suai secara eksplisit. Ia membolehkan kami mengubah suai tingkah laku fungsi atau kelas tanpa menyentuh kod sumbernya. Dalam erti kata lain, penghias membungkus fungsi untuk memanjangkan tingkah lakunya dan bukannya mengubah suainya secara kekal. Bermula daripada artikel ini, mari kita kaji apa itu penghias dan cara mereka berfungsi dalam Python. 1.1 Mengenai fungsi Untuk memahami cara penghias berfungsi, kita perlu menyemak beberapa konsep penting tentang fungsi dalam Python. Sentiasa sedar bahawa dalam Python, fungsi (fungsi) adalah warga kelas pertama, jadi konsep berikut harus diingat: ü fungsi

Di atas kami mencipta kelas pemasa Python yang pertama, dan kemudian secara beransur-ansur melanjutkan kelas Pemasa kami, dan kodnya juga agak kaya dan berkuasa. Kami tidak boleh berpuas hati dengan perkara ini, kami masih perlu templat beberapa kod untuk menggunakan Pemasa: pertama, nyatakan kelas Kedua, panggil .start() sebelum blok kod yang akan ditetapkan masa. selepas blok kod. Pengurus konteks pemasa Python Python mempunyai binaan unik untuk memanggil fungsi sebelum dan selepas blok kod: pengurus konteks. Memahami Pengurus Konteks dalam Python Pengurus Konteks telah menjadi bahagian penting Python sejak sekian lama. Oleh PEP 343 pada tahun 2005

Python ialah bahasa yang mesra pemula. Walau bagaimanapun, ia juga mempunyai banyak ciri canggih yang sukar dikuasai, seperti penghias. Ramai pemula tidak pernah memahami penghias dan cara mereka bekerja Dalam artikel ini, kami akan memperkenalkan selok-belok penghias. Dalam Python, fungsi ialah struktur yang sangat fleksibel yang boleh diberikan kepada pembolehubah, diluluskan sebagai parameter kepada fungsi lain, atau digunakan sebagai output fungsi. Penghias pada asasnya ialah fungsi yang membenarkan fungsi lain menambah beberapa fungsi tanpa pengubahsuaian. Ini adalah maksud "hiasan". "hiasan" ini sendiri mewakili fungsi Jika anda menggunakannya untuk mengubah suai fungsi yang berbeza, ia akan menambah fungsi ini.

Contoh Penghias dalam Python boleh sama ada fungsi atau kelas. Dalam bahagian sebelumnya, kami menggunakan penghias fungsi. Sekarang, kita akan belajar bagaimana untuk menentukan penghias kelas. Kami akan menentukan kelas tersuai yang bertindak sebagai penghias. Apabila fungsi dihiasi/diubah suai dengan kelas, fungsi itu menjadi contoh kelas itu. Mari ketahui: Seperti yang ditunjukkan di atas, kami mencipta penghias kelas yang ringkas. Untuk mana-mana kelas menjadi penghias, ia perlu melaksanakan kaedah __call__(). Kaedah __call__() berfungsi sama seperti fungsi pembungkus dalam penghias fungsi. Sekarang mari kita gunakan kelas ini untuk menghiasi fungsi: Output menjalankan program adalah seperti berikut: Penghias kelas dengan parameter *args dan **kwargs Untuk membenarkan penghias kelas menggunakan parameter, gunakan
