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.
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)
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.
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
@static_vars(counter=0)
def foo():
foo.counter += 1 print("Counter is", foo.counter)
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!