Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Peraturan LEGB Python Menyelesaikan Konflik Skop Pembolehubah?
Peraturan Scoping Python: Pendekatan Ringkas
Memahami peraturan skop Python boleh mengelirukan, terutamanya untuk pengaturcara pertengahan. Artikel ini memberikan penjelasan ringkas tentang prinsip teras yang mengawal peleraian nama dalam Python, yang dikenali sebagai peraturan LEGB.
Peraturan LEGB
Peraturan LEGB menentukan susunan dalam Python yang mana mencari nama pembolehubah:
Dalam yang diberikan coretan kod:
class Foo: def spam(): for code4: x()
Arahan carian LEGB untuk pembolehubah x akan menjadi:
Fungsi dan Skop Lambda
Fungsi Lambda juga mengikut peraturan LEGB. Walau bagaimanapun, mengakses pembolehubah yang ditakrifkan dalam skop sekeliling boleh menjadi rumit. Pertimbangkan:
y = 10 def outer(): x = 20 foo = lambda: x + y foo() # Error: 'y' is not defined
Dalam kes ini, lambda foo tidak boleh mengakses y kerana ia ditakrifkan dalam ruang nama fungsi yang disertakan, bukan dalam ruang nama global atau terbina dalam. Untuk mengakses y, anda mesti mengisytiharkannya secara eksplisit sebagai bukan tempatan dalam lambda:
y = 10 def outer(): x = 20 foo = lambda: nonlocal y + x foo() # Returns 30
Kesimpulan
Peraturan LEGB menyediakan cara yang jelas dan konsisten untuk memahami nama Python resolusi. Ia memudahkan skop, menjadikannya lebih mudah bagi pengaturcara untuk mengesan dan menyahpepijat kod mereka. Dengan memahami peraturan ini, pembangun dengan yakin boleh mengelakkan ralat skop biasa dan memastikan aplikasi Python mereka teguh dan boleh diselenggara.
Atas ialah kandungan terperinci Bagaimanakah Peraturan LEGB Python Menyelesaikan Konflik Skop Pembolehubah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!