Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Kita Boleh Mensimulasikan Pembolehubah Statik dalam Fungsi Python?

Bagaimanakah Kita Boleh Mensimulasikan Pembolehubah Statik dalam Fungsi Python?

Susan Sarandon
Lepaskan: 2024-12-06 13:59:09
asal
437 orang telah melayarinya

How Can We Simulate Static Variables in Python Functions?

Menggunakan Pembolehubah Statik Dalam Fungsi Python

Dalam C/C, pembolehubah statik memainkan peranan penting dalam mengekalkan nilai merentas seruan fungsi. Python, bagaimanapun, tidak mempunyai persamaan yang jelas dengan konsep ini. Oleh itu, bagaimanakah kita boleh melaksanakan pembolehubah statik dengan berkesan dalam fungsi Python?

Pendekatan idiomatik Python melibatkan memanipulasi pembolehubah peringkat kelas. Ini boleh dicapai dengan mentakrifkan kelas yang merangkum fungsi dan keadaan yang berkaitan. Walau bagaimanapun, dalam senario di mana penggunaan kelas tidak diingini, kaedah alternatif mesti digunakan.

Satu penyelesaian melibatkan memanfaatkan ruang nama fungsi, seperti yang digambarkan di bawah:

def foo():
    if not hasattr(foo, "counter"):
        foo.counter = 0
    foo.counter += 1
    print("Counter is %d" % foo.counter)
Salin selepas log masuk

Coretan kod ini mentakrifkan pembilang dalam ruang nama fungsi, memastikan ia berterusan merentasi panggilan. Walau bagaimanapun, ia memerlukan pemulaan yang jelas apabila seruan pertama.

Untuk pendekatan yang lebih ringkas dan disesuaikan, penghias boleh digunakan. Penghias berikut mencipta pembolehubah statik dan memulakannya berdasarkan hujah kata kunci yang ditentukan:

def static_vars(**kwargs):
    def decorate(func):
        for k in kwargs:
            setattr(func, k, kwargs[k])
        return func
    return decorate
Salin selepas log masuk

Penghias ini boleh digunakan seperti berikut:

@static_vars(counter=0)
def foo():
    foo.counter += 1
    print("Counter is %d" % foo.counter)
Salin selepas log masuk

Dengan memanfaatkan penghias ini, pemulaan balas kod boleh diletakkan di bahagian atas definisi fungsi, memberikan pelaksanaan yang lebih intuitif dan boleh dibaca.

Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Mensimulasikan Pembolehubah Statik dalam Fungsi Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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