Rumah > pembangunan bahagian belakang > Tutorial Python > Memahami Python Hecorators: Panduan Pemula dengan Contoh

Memahami Python Hecorators: Panduan Pemula dengan Contoh

Barbara Streisand
Lepaskan: 2025-01-27 16:12:11
asal
770 orang telah melayarinya

Understanding Python Decorators: A Beginner’s Guide with Examples

Python Hiasan: Panduan dan Contoh Pemula

Python Decorator adalah alat yang kuat dan sejagat untuk mengubahsuai fungsi atau tingkah laku kaedah. Mereka membolehkan anda menambah fungsi ke kod sedia ada tanpa mengubah struktur kod. Artikel ini akan menganalisis peranti hiasan dan memberikan contoh mudah untuk membantu anda memahami dan menggunakannya dengan berkesan.

Apa itu penghias?

Penghias dalam Python pada dasarnya merupakan fungsi yang menerima fungsi lain sebagai parameter dan mengembang atau mengubah tingkah lakunya. Hiasan biasanya digunakan untuk menambah pembalakan, kawalan akses, memori atau pengesahan kepada fungsi atau kaedah yang ada.

Hiasan dalam Python menggunakan

tatabahasa digunakan untuk definisi fungsi.

@decorator_name

struktur penghias

Fungsi penghias asas mempunyai struktur berikut:

hiasan aplikasi
<code class="language-python">def decorator_function(original_function):
    def wrapper_function(*args, **kwargs):
        # 在原始函数执行之前的代码
        result = original_function(*args, **kwargs)
        # 在原始函数执行之后的代码
        return result
    return wrapper_function</code>
Salin selepas log masuk
anda boleh menggunakan kaedah tatabahasa atau manual untuk memohon hiasan pada fungsi:

@decorator_name Contoh 1: Penyusutan Asas

<code class="language-python">@decorator_function
def some_function():
    print("这是原始函数。")

# 等同于:
# some_function = decorator_function(some_function)</code>
Salin selepas log masuk
Marilah kita buat peranti hiasan yang mudah yang mencetak mesej sebelum dan selepas fungsi berjalan.

output:

<code class="language-python">def simple_decorator(func):
    def wrapper():
        print("函数调用之前。")
        func()
        print("函数调用之后。")
    return wrapper

@simple_decorator
def say_hello():
    print("Hello, World!")

say_hello()</code>
Salin selepas log masuk

Contoh 2: Decoler dengan parameter

Anda boleh membuat penghias yang menerima parameter, kaedahnya adalah untuk membungkusnya dalam fungsi lain.
<code>函数调用之前。
Hello, World!
函数调用之后。</code>
Salin selepas log masuk

output:

<code class="language-python">def repeat_decorator(times):
    def decorator(func):
        def wrapper(*args, **kwargs):
            for _ in range(times):
                func(*args, **kwargs)
        return wrapper
    return decorator

@repeat_decorator(3)
def greet(name):
    print(f"Hello, {name}!")

greet("Alice")</code>
Salin selepas log masuk

aplikasi sebenar peranti hiasan Penyusutan digunakan secara meluas dalam senario sebenar. Berikut adalah beberapa contoh praktikal yang dipermudahkan:

<code>Hello, Alice!
Hello, Alice!
Hello, Alice!</code>
Salin selepas log masuk
1. Rekod Operasi Pengguna

anda boleh menggunakan hiasan untuk merakam masa operasi pengguna.

output:

2. Mengesan masa pelaksanaan
<code class="language-python">def log_action(func):
    def wrapper(*args, **kwargs):
        print(f"操作:正在执行 {func.__name__}。")
        return func(*args, **kwargs)
    return wrapper

@log_action
def upload_file(filename):
    print(f"正在上传 {filename}...")

upload_file("report.pdf")</code>
Salin selepas log masuk

Masa yang diperlukan untuk menjejaki pelaksanaan tugas sangat berguna untuk pemantauan prestasi.

<code>操作:正在执行 upload_file。
正在上传 report.pdf...</code>
Salin selepas log masuk
output:

3. Tambah Salam Pengguna

<code class="language-python">import time

def track_time(func):
    def wrapper(*args, **kwargs):
        start = time.time()
        result = func(*args, **kwargs)
        end = time.time()
        print(f"{func.__name__} 执行耗时 {end - start:.2f} 秒。")
        return result
    return wrapper

@track_time
def download_file(file_size):
    time.sleep(file_size / 10)  # 模拟下载时间
    print("下载完成。")

download_file(50)</code>
Salin selepas log masuk
hiasan boleh diperibadikan dengan menambahkan unsur -unsur dinamik.

output:

<code>下载完成。
download_file 执行耗时 5.00 秒。</code>
Salin selepas log masuk

mata utama

Penghias adalah cara yang kuat untuk mengubahsuai fungsi atau tingkah laku kaedah.

Mereka dapat memudahkan tugas berulang, seperti rekod log, masa atau pemperibadian.
<code class="language-python">def add_greeting(func):
    def wrapper(name):
        print("您好,欢迎!")
        func(name)
    return wrapper

@add_greeting
def show_user_profile(name):
    print(f"用户资料:{name}")

show_user_profile("Alice")</code>
Salin selepas log masuk

menggunakan tatabahasa dengan mudah boleh menggunakannya. Hiasan boleh menerima parameter dan bersarang untuk meningkatkan fleksibiliti.

<code>您好,欢迎!
用户资料:Alice</code>
Salin selepas log masuk

Dengan menguasai penghias, anda akan menguasai alat yang berharga untuk menulis kod python yang mudah dan cekap. Mula mencuba contoh -contoh yang biasa dengan konsep ini!

Atas ialah kandungan terperinci Memahami Python Hecorators: Panduan Pemula dengan Contoh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan