Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Melaksanakan Pembolehubah Statik dalam Fungsi Python?

Bagaimanakah Saya Boleh Melaksanakan Pembolehubah Statik dalam Fungsi Python?

Barbara Streisand
Barbara Streisandasal
2024-12-05 12:06:12543semak imbas

How Can I Implement Static Variables in Python Functions?

Melaksanakan Pembolehubah Statik dalam Fungsi Python

Dalam Python, meniru gelagat pembolehubah statik dalam fungsi, seperti yang dilihat dalam bahasa seperti C/C , mungkin pada mulanya kelihatan seperti tugas yang membingungkan. Walau bagaimanapun, terdapat beberapa pendekatan untuk mencapai fungsi ini.

Satu penyelesaian melibatkan penggunaan ruang nama fungsi itu sendiri. Dengan memberikan atribut kepada objek fungsi, kami mencipta pembolehubah statik dengan berkesan dalam skopnya. Pertimbangkan kod berikut:

def foo():
    foo.counter += 1
    print("Counter is %d" % foo.counter)

foo.counter = 0

Pendekatan ini memulakan pembolehubah pembilang di luar fungsi dan memberikannya kepada ruang nama objek fungsi. Akibatnya, setiap panggilan ke foo() menambah pembilang dengan satu, mengekalkan keadaannya walaupun merentasi berbilang seruan.

Sebagai alternatif, anda boleh menggunakan fungsi penghias untuk mengautomasikan penciptaan pembolehubah statik. Penghias berikut, static_vars(), mengambil hujah kata kunci dan menetapkannya sebagai atribut fungsi yang dihias:

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

Menggunakan penghias ini, anda boleh menulis fungsi foo() seperti berikut:

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

Penghias memastikan pembolehubah pembilang dimulakan sekali dan kekal dikaitkan dengan foo() fungsi.

Walaupun kaedah ini mencontohi pembolehubah statik secara berkesan pada tahap fungsi, perlu diperhatikan bahawa tidak seperti dalam C/C , fungsi Python tidak terikat pada contoh objek tertentu. Oleh itu, foo. awalan diperlukan apabila mengakses pembolehubah statik, kerana ia masih dikaitkan dengan objek fungsi itu sendiri.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Pembolehubah Statik dalam Fungsi Python?. 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