Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Menggunakan dan Penghias Rantai dengan Berkesan dalam Python?

Bagaimana untuk Menggunakan dan Penghias Rantai dengan Berkesan dalam Python?

Linda Hamilton
Lepaskan: 2025-01-01 08:10:10
asal
540 orang telah melayarinya

How to Effectively Use and Chain Decorators in Python?

Cara Membuat dan Menghias Rantai dalam Python

Mencipta Penghias

Tulis fungsi penghias yang mengambil fungsi lain, dipanggil fungsi "berbalut", sebagai hujah:

def my_decorator(func):

    # Code to execute before calling the wrapped function
    print("Before the function runs")

    # Call the wrapped function and store its return value
    result = func()

    # Code to execute after calling the wrapped function
    print("After the function runs")

    # Return the result of the wrapped function
    return result

# Example of a decorator in action
@my_decorator
def say_hello():
    print("Hello, world!")
Salin selepas log masuk

Penghias Rantai

Gunakan operator @ untuk menggunakan berbilang penghias pada fungsi yang sama:

@my_decorator
@another_decorator
def chained_function():
    print("This function is doubly decorated")
Salin selepas log masuk

Penghias dengan Hujah

Benarkan penghias menerima hujah:

def decorator_with_arg(arg1, arg2):

    def decorator(func):

        # Use the decorator arguments to modify the wrapped function's behavior
        func.arg1 = arg1
        func.arg2 = arg2

        return func

# Example of a decorator with arguments
@decorator_with_arg("foo", "bar")
def my_function():
    print("Args:", my_function.arg1, my_function.arg2)
Salin selepas log masuk

Penghias Kaedah Kelas

Gunakan penghias untuk kaedah dalam kelas:

class MyClass:

    @classmethod
    def my_class_method(cls):
        print("This is a class method")
Salin selepas log masuk

Amalan: Menghias seorang Penghias

Buat penghias yang membuat penghias lain terima hujah:

def decorator_with_args(decorator_to_enhance):

    def decorator_maker(*args, **kwargs):

        def decorator_wrapper(func):

            # Wrap the original decorator and pass the arguments
            return decorator_to_enhance(func, *args, **kwargs)

        return decorator_wrapper


# Example of a decorated decorator
@decorator_with_args
def decorated_decorator(func, *args, **kwargs):
    print("Args:", args, kwargs)
    return func


@decorated_decorator(10, 20, name="John")
def my_function():
    print("Decorated function")
Salin selepas log masuk

Amalan Terbaik

  • Elakkan memperlahankan kod disebabkan overhed penghias.
  • Gunakan functools.wraps() untuk mengekalkan maklumat fungsi asal.
  • Penghias adalah kekal setelah digunakan pada fungsi.
  • Pertimbangkan untuk menggunakannya untuk nyahpepijat atau melanjutkan fungsi sedia ada daripada perpustakaan luaran.

Contoh Penggunaan

Gunakan penghias untuk tugasan seperti :

  • Mengukur masa pelaksanaan fungsi (@penanda aras)
  • Panggilan fungsi pengelogan (@pembalogan)
  • Mengira panggilan fungsi (@pembilang)
  • Caching keputusan fungsi

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan dan Penghias Rantai dengan Berkesan dalam Python?. 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