Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menetapkan Pembolehubah Tempatan secara Dinamik dalam Python?
Tugasan Pembolehubah Dinamik dalam Python
Dalam Python, menetapkan pembolehubah tempatan secara dinamik dengan mengubah suai terus kamus locals() bukanlah penyelesaian yang berdaya maju. Bertentangan dengan kepercayaan popular, sebarang pengubahsuaian sedemikian tidak akan berterusan dalam skop fungsi.
Pendekatan Alternatif
Untuk menetapkan pembolehubah setempat secara dinamik, pertimbangkan untuk menggunakan mana-mana kaedah berikut:
Kamus
Buat kamus dan tetapkan pasangan nilai kunci secara dinamik:
d = {} d['xyz'] = 42
Atribut Objek
Gunakan objek dan tetapkan atribut secara dinamik:
class C: pass obj = C() setattr(obj, 'xyz', 42)
Edit
Mengakses pembolehubah dalam bukan fungsi ruang nama (modul, definisi kelas, contoh) biasanya melibatkan carian kamus. Walau bagaimanapun, fungsi setempat dioptimumkan untuk kelajuan dengan pra-penyusun nama pembolehubah yang diketahui pengkompil.
Dalam pelaksanaan C Python, memanggil locals() dalam fungsi mencipta kamus yang dimulakan dengan nilai pembolehubah tempatan semasa. Kamus ini dikemas kini dengan perubahan pada pembolehubah setempat dan dikembalikan apabila panggilan berikutnya kepada locals().
Dalam IronPython, fungsi memanggil locals() menggunakan kamus sebagai stor pembolehubah setempat mereka. Tugasan kepada pembolehubah tempatan mengubah kamus, dan sebaliknya. Walau bagaimanapun, mengikat nama yang berbeza kepada fungsi tempatan dalam IronPython membenarkan akses kepada pembolehubah tempatan skop pengikatan, bukan fungsi.
Awas
Adalah penting untuk ambil perhatian bahawa pemberian kepada kamus yang dikembalikan oleh locals() boleh menghasilkan keputusan yang tidak dapat diramalkan. Bergantung pada tugasan ini amat tidak digalakkan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menetapkan Pembolehubah Tempatan secara Dinamik dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!