Membedah Perbezaan antara global(), locals(), dan vars()
Di dalam bidang manipulasi ruang nama Python, wujud tiga fungsi penting: globals(), locals(), dan vars(). Setiap fungsi ini mengembalikan kamus, tetapi perbezaan asasnya memerlukan pemeriksaan yang lebih teliti.
globals()
Secara konsisten, globals() mengembalikan kamus yang mewakili ruang nama bagi modul semasa. Kamus ini menyimpan semua pembolehubah global, fungsi dan kelas yang ditakrifkan dalam modul tersebut.
locals()
Tidak seperti globals(), locals() mempamerkan gelagat dinamik . Apabila dipanggil dalam fungsi, ia mengembalikan kamus yang mengandungi pembolehubah tempatan semasa, termasuk pembolehubah penutupan. Walau bagaimanapun, kamus ini adalah petikan sementara. Hanya panggilan kepada locals() atau akses kepada atribut f_locals bagi bingkai tindanan semasa mencetuskan kemas kini kandungannya. Tugasan kepada kamus locals() atau pembolehubah sepadannya tidak dikemas kini silang.
vars()
Vars() juga mengembalikan kamus, tetapi kepelbagaiannya melangkaui ruang nama modul dan fungsi. Apabila dipanggil tanpa argumen, vars() bertindak serupa dengan locals(), mengembalikan kamus untuk ruang nama semasa. Walau bagaimanapun, apabila objek diluluskan sebagai hujah, vars() menyelidiki dikt objek itu untuk mendapatkan semula atributnya.
Kemas kini dan Kesan
Baik locals() mahupun vars() secara automatik tidak memastikan kamus mereka dikemas kini dengan perubahan dalam ruang nama. Tugasan kepada pembolehubah tidak mengemas kini kamus, dan sebaliknya, perubahan pada kamus tidak disebarkan kepada pembolehubah. Walau bagaimanapun, jika f_locals diakses (dalam kes locals()) atau dikt objek diakses (dalam kes vars()), kamus mungkin dikemas kini.
Dalam summary, globals(), locals(), dan vars() menyediakan trio alatan untuk memanipulasi ruang nama dalam Python. Memahami perbezaan mereka membolehkan pembangun menavigasi persekitaran masa jalan Python dengan ketepatan dan kawalan.
Atas ialah kandungan terperinci Apakah Perbezaan Utama Antara globals(), locals(), dan vars() dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!