Memahami Perbezaan Antara globals(), locals(), dan vars()
Dalam Python, globals(), locals() , dan vars() ialah fungsi yang memberikan cerapan tentang ruang nama program semasa. Mari kita terokai perbezaan mereka:
globals()
-
Tujuan: Mengembalikan kamus ruang nama global.
-
Kelakuan: Konsisten, sentiasa mengembalikan kamus ruang nama untuk modul semasa.
locals()
-
Tujuan: Memperoleh kamus yang mewakili ruang nama semasa.
-
Gelagat: Dinamik, bergantung pada pemanggil konteks.
-
Di dalam fungsi: Mengembalikan kamus yang mengandungi pembolehubah tempatan semasa dan sebarang pembolehubah penutupan. Berbilang panggilan dalam bingkai tindanan yang sama mengembalikan kamus yang sama kerana perkaitannya dengan atribut f_locals objek bingkai. Kemas kini pada kamus ini ditunjukkan dalam ruang nama tempatan, tetapi memberikan nilai terus kepada kamus tidak mengubah suai pembolehubah tempatan yang sepadan.
-
Di luar fungsi: Mengembalikan kamus sebenar yang berfungsi sebagai ruang nama semasa. Perubahan pada kamus ini disegerakkan dengan ruang nama, dan sebaliknya.
vars()
-
Tujuan: Menerima objek sebagai hujah dan mengembalikan atribut dict itu objek.
-
Gelagat:
- Tanpa hujah, ia mengembalikan dikt ruang nama semasa (serupa dengan penduduk tempatan () di luar fungsi).
- Apabila disediakan objek, ia mendapatkan semula objek itu __dict__, biasanya mengandungi data atributnya.
- Kemas kini kamus yang dikembalikan mempengaruhi atribut objek, dan sebaliknya, perubahan pada atribut objek ditunjukkan dalam kamus.
Nota Utama:
Tingkah laku locals() dan vars() mungkin berbeza mengikut versi dan pelaksanaan Python. Dalam CPython 2.x, locals() boleh berfungsi secara berbeza dengan penggunaan "exec 'pass'".
Atas ialah kandungan terperinci Apakah Perbezaan Antara `globals()`, `locals()` dan `vars()` dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kenyataan: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