Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Gelagat Fungsi `exec` Berbeza dalam Python 2 dan Python 3?
Gelagat Fungsi exec dalam Python 2 vs. Python 3
Dalam Python 2 dan Python 3, fungsi exec mempamerkan perbezaan yang ketara dalam tingkah laku .
Sebab untuk Perbezaan
Dalam Python 2, exec ialah pernyataan yang melumpuhkan pengoptimuman skop tempatan secara eksplisit dan membenarkan akses kepada pembolehubah dalam skop tempatan dan global. Sebaliknya, exec() Python 3 ialah fungsi yang sentiasa mengoptimumkan skop fungsi.
Impak pada Pengikatan Pembolehubah
Dalam Python 2, apabila menggunakan pernyataan exec, pembolehubah ditemui dalam locals() telah disalin kembali ke fungsi locals. Ini mengakibatkan pengikatan pembolehubah di dalam fungsi kepada nilai yang dinyatakan dalam pernyataan exec.
Dalam Python 3, walau bagaimanapun, exec() tidak mempunyai gelagat ini secara lalai. Oleh itu, pembolehubah di dalam fungsi tidak terikat kepada pembolehubah dalam pernyataan exec().
Mengakses Pembolehubah Setempat
Untuk mengakses pembolehubah setempat menggunakan exec() dalam Python 3 , ruang nama baharu (biasanya kamus) hendaklah dibuat dan diserahkan sebagai hujah kepada fungsi tersebut.
Disemak Kod
Di bawah ialah contoh kod yang disemak semula yang menunjukkan penggunaan exec() yang betul dalam Python 3 untuk mencapai kelakuan Python 2:
def execute(a, st): namespace = {} exec("b = {}\nprint('b:', b)".format(st), namespace) print(namespace['b'])
Dalam kod ini, a kamus bernama ruang nama dicipta dan diserahkan kepada exec(). Sebarang pembolehubah yang ditakrifkan dalam pernyataan exec() akan boleh diakses melalui kamus.
Nota
Dokumentasi exec() dengan jelas memberi amaran terhadap percubaan pengubahsuaian pada kamus tempatan lalai , kerana ia mungkin tidak menggambarkan perubahan yang dibuat dalam panggilan exec().
Atas ialah kandungan terperinci Bagaimanakah Gelagat Fungsi `exec` Berbeza dalam Python 2 dan Python 3?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!