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

Bagaimanakah Saya Boleh Mensimulasikan Pembolehubah Statik dalam Fungsi Python?

DDD
Lepaskan: 2024-12-16 19:03:16
asal
217 orang telah melayarinya

How Can I Simulate Static Variables in Python Functions?

Pembolehubah Statik dalam Fungsi Python: Meniru C/C

Dalam C/C , fungsi boleh mengisytiharkan pembolehubah statik untuk mengekalkan keadaan merentas panggilan fungsi. Python, sebaliknya, tidak menyokong pembolehubah statik di dalam fungsi secara lalai.

Melaksanakan Pembolehubah Statik dalam Fungsi Python

Untuk meniru kelakuan pembolehubah statik dalam fungsi Python, gunakan yang berikut pendekatan:


def foo():

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

Di sini, kami menyemak kewujudan atribut "counter" di dalam fungsi tersebut. Jika ia tidak wujud, kami memulakannya kepada 0. Kod permulaan ini dilaksanakan pada permulaan panggilan fungsi pertama.

Pendekatan Penghias

Untuk meningkatkan kebolehbacaan dan mengalihkan kod permulaan ke bahagian atas, seseorang boleh menggunakan penghias:

<br>def static_vars(**kwargs):</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">def decorate(func):
    for k in kwargs:
        setattr(func, k, kwargs[k])
    return func
return decorate
Salin selepas log masuk

@static_vars(counter=0)
def foo():

foo.counter += 1
print("Counter is", foo.counter)
Salin selepas log masuk

Adakah Skop Kelas Mempengaruhi Pembolehubah Statik?

Meletakkan fungsi di dalam kelas tidak akan mengubah pelaksanaan pembolehubah statik. Pembolehubah statik masih akan menjadi khusus fungsi, bukan khusus kelas.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensimulasikan 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
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan