Penghias Python: Kod Permudah

Susan Sarandon
Lepaskan: 2024-09-26 06:26:42
asal
734 orang telah melayarinya

Python Decorators: Simplifying Code

Penghias dalam Python ialah alat berkuasa yang membolehkan anda mengubah suai gelagat fungsi atau kaedah tanpa menukar kod sumbernya. Ia menyediakan cara yang bersih untuk menambah kefungsian dan digunakan secara meluas untuk pengelogan, menguatkuasakan peraturan dan mengoptimumkan prestasi.

Dalam siaran ini, kita akan melihat enam penghias Python biasa dengan contoh mudah.

1 - @staticmethod: Tentukan Kaedah Statik

Penghias @staticmethod mencipta kaedah yang tidak mengakses data contoh (diri) atau kelas (cls). Ia berkelakuan seperti fungsi biasa tetapi boleh dipanggil dari kelas atau contoh.

Contoh:

class MyClass:
    @staticmethod
    def greet():
        return "Hello from static method!"

Salin selepas log masuk

2 - @classmethod: Tentukan Kaedah Kelas

Penghias @classmethod membolehkan anda menentukan kaedah yang mengambil kelas (cls) sebagai hujah pertama. Ini berguna untuk kaedah kilang atau mengubah keadaan kelas.

Contoh:

class MyClass:
    count = 0

    @classmethod
    def increment_count(cls):
        cls.count += 1
Salin selepas log masuk

3 - @property: Tentukan Atribut Baca Sahaja

Penghias @property membenarkan kaedah untuk diakses seperti atribut. Ia berguna apabila anda ingin mengawal akses kepada harta benda tanpa mendedahkan pelaksanaan dalaman.

Contoh:

class Circle:
    def __init__(self, radius):
        self._radius = radius

    @property
    def area(self):
        return 3.14 * self._radius ** 2
Salin selepas log masuk

4 - @functools.lru_cache: Cache Hasil Fungsi Mahal

Penghias @lru_cache (dari functools) menyimpan cache hasil panggilan fungsi untuk mengelakkan pengiraan semula. Ini boleh meningkatkan prestasi dengan ketara untuk fungsi yang mahal atau yang sering dipanggil.

Contoh:

from functools import lru_cache

@lru_cache(maxsize=32)
def expensive_computation(x):
    return x ** 2
Salin selepas log masuk

5 - @functools.wraps: Kekalkan Metadata dalam Penghias Tersuai

Apabila menulis penghias tersuai, penghias @wraps mengekalkan metadata (nama, docstring) fungsi asal, memastikan alat introspeksi masih berfungsi.

Contoh:

from functools import wraps

def my_decorator(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        return func(*args, **kwargs)
    return wrapper
Salin selepas log masuk

6 - @dataclass: Ringkaskan Takrif Kelas

Penghias @dataclass (daripada modul dataclasses) secara automatik menjana kaedah seperti init() dan repr() untuk kelas. Ia sesuai untuk kelas memegang data.

Contoh:

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int
Salin selepas log masuk

Kesimpulan

Penghias Python seperti @staticmethod, @classmethod, @property, @lru_cache, @wraps dan @dataclass membantu menulis kod yang lebih bersih dan cekap dengan membungkus kefungsian pada kaedah dan fungsi. Ia adalah alat serba boleh yang boleh memudahkan banyak tugas pengaturcaraan.

Sumber

Definisi Penghias Python
@kaedah statik
@kaedah kelas
@harta benda
@functools.lru_cache
@functools.wraps
@dataclass

Atas ialah kandungan terperinci Penghias Python: Kod Permudah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
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