Mengatasi Had Kemas Kini Pembolehubah dengan Python Exec
Dalam Python, fungsi exec membenarkan pelaksanaan dinamik kod Python pada masa jalan. Walau bagaimanapun, apabila digunakan dengan pembolehubah tempatan, ia boleh bertindak secara tidak dijangka.
Masalahnya:
Pertimbangkan kod berikut:
def f(): a = 1 exec("a = 3") print(a) f()
Dalam Python 2, kod ini akan mencetak 3, menunjukkan bahawa pembolehubah tempatan a telah dikemas kini dalam panggilan exec. Walau bagaimanapun, dalam Python 3, ia mencetak 1, menimbulkan persoalan tentang cara mengemas kini pembolehubah setempat semasa panggilan exec.
Penyelesaian:
Untuk menangani isu ini, anda perlu menghantar kamus tempatan secara eksplisit kepada fungsi exec:
def foo(): ldict = {} exec("a = 3", globals(), ldict) a = ldict['a'] print(a)
Dengan menggunakan locals(), anda mencipta tempatan baharu ruang nama berubah untuk panggilan exec. Pengubahsuaian pada ruang nama ini akan dicerminkan dalam skop setempat fungsi foo.
Isi Utama:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Kemas Kini Pembolehubah Tempatan Dalam Fungsi `exec` Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!