Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menggunakan Penghias Python untuk Menjadikan Fungsi Tebal dan Miring, Menambah Cap Masa dan Memodalkan Keputusan Kaedah?

Bagaimanakah Saya Boleh Menggunakan Penghias Python untuk Menjadikan Fungsi Tebal dan Miring, Menambah Cap Masa dan Memodalkan Keputusan Kaedah?

DDD
DDDasal
2024-12-24 16:33:17491semak imbas

How Can I Use Python Decorators to Make Functions Bold and Italic, Add Timestamps, and Capitalize Method Results?

Jadikan Fungsi Tebal dan Miring Menggunakan Penghias

Penghias ialah fungsi Pythonic yang meningkatkan fungsi lain. Kami akan mencipta dua penghias, @make_bold dan @make_italic, untuk memformat teks dalam huruf tebal dan condong. Begini caranya:

Penghias untuk menjadikan teks tebal

def make_bold(func):

def wrapper():
    return "<b>" + func() + "</b>"  # Surround the result with bold tags
return wrapper

Penghias untuk membuat teks condong

def make_italic(func):

def wrapper():
    return "<i>" + func() + "</i>"  # Surround the result with italic tags
return wrapper

@make_bold
@make_italic
def say():

return "Hello"

print(say()) # Output: "Helo"

Menghiasi Fungsi dengan Argumen

Anda juga boleh mencipta penghias yang menerima hujah. Sebagai contoh, mari buat penghias yang menambah cap masa pada hasil:


masa import

Penghias untuk menambah cap masa pada fungsi

def add_timestamp(func):

def wrapper(*args, **kwargs):
    timestamp = time.ctime()  # Get the current time
    return f"{timestamp}: {func(*args, **kwargs)}"  # Prepend the timestamp to the call
return wrapper

@add_timestamp
def greet(name):

return f"Hello, {name}!"

print(greet("John")) # Output: "2023-01 -01 12:00:00: Hello, John!"

Penghias Kaedah

Penghias berfungsi bukan sahaja untuk fungsi tetapi juga untuk kaedah. Begini cara menghias kaedah:


Pengguna kelas:

def __init__(self, name):
    self.name = name

Penghias untuk menggunakan huruf besar nama pengguna

def capitalize_name(kaedah):

def wrapper(self):
    return method(self).capitalize()  # Capitalize the result
return wrapper

@capitalize_name
def get_name(self):

return self.name

user = User("john")
print(user.get_name()) # Output: "John"

Amalan Terbaik

  • Gunakan @sintaks untuk menghiasi fungsi, kerana ia lebih boleh dibaca.
  • Pastikan penghias ringan untuk mengelakkan prestasi overhed.
  • Gunakan functools.wraps() untuk mengekalkan metadata fungsi asal (nama, docstring).
  • Pertimbangkan untuk menggunakan penghias untuk kebimbangan silang seperti pengelogan, caching atau pengendalian ralat.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Penghias Python untuk Menjadikan Fungsi Tebal dan Miring, Menambah Cap Masa dan Memodalkan Keputusan Kaedah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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