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
Lepaskan: 2024-12-05 12:06:12
asal
551 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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)
Salin selepas log masuk

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!

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