Memahami "nonlocal" dalam Python 3: A Deep Dive
Python 3 memperkenalkan kata kunci "bukan tempatan" yang berkuasa, yang membolehkan anda mengubah suai pembolehubah dalam skop luar dari dalam fungsi bersarang. Soalan ini memberikan penjelasan menyeluruh tentang cara "bukan tempatan" beroperasi.
Apakah itu "bukan tempatan"?
"bukan tempatan" memisahkan pembolehubah daripada skop setempat bagi bersarang fungsi, membolehkannya mengakses pembolehubah dalam skop luar. Ini berguna apabila anda perlu mengubah suai pembolehubah dalam skop luar tanpa menggunakan pembolehubah global atau kaedah berbelit lain.
Cara "bukan tempatan" Berfungsi
Pertimbangkan kod berikut coretan tanpa menggunakan "nonlocal":
x = 0 def outer(): x = 1 def inner(): x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
Output:
inner: 2 outer: 1 global: 0
Perhatikan bahawa mengubah suai nilai x dalam fungsi inner() tidak menjejaskan nilai x dalam fungsi outer() . Ini kerana inner() mencipta pembolehubah tempatan bernama x yang membayangi pembolehubah luar dengan nama yang sama.
Sekarang, mari kita ubah suai kod menggunakan "nonlocal":
x = 0 def outer(): x = 1 def inner(): nonlocal x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
Output:
inner: 2 outer: 2 global: 0
Dalam kes ini, menggunakan "nonlocal" dalam fungsi inner() mewujudkan pautan kepada pembolehubah x dalam skop luar(). Dengan mengubah suai pembolehubah dalam fungsi dalaman, kami mengubah suai pembolehubah yang sama secara berkesan dalam skop luar.
Menggunakan "global" vs. "nonlocal"
The "global " kata kunci juga boleh digunakan untuk mengakses dan mengubah suai pembolehubah global, tetapi ia berkelakuan berbeza daripada "bukan tempatan." "global" mengikat pembolehubah kepada skop yang benar-benar global, manakala "bukan tempatan" mengikatnya pada skop tertutup yang paling hampir.
Pertimbangkan coretan kod berikut menggunakan "global":
x = 0 def outer(): x = 1 def inner(): global x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
Output :
inner: 2 outer: 1 global: 2
Seperti yang anda lihat, mengubah suai nilai x dalam fungsi dalaman kini mempengaruhi pembolehubah global x dan bukannya skop outer().
Ringkasan
"nonlocal" ialah kata kunci Python penting yang membolehkan anda mengakses dan mengubah suai pembolehubah dalam skop luar daripada fungsi bersarang tanpa mencemarkan ruang nama global. Ia menyediakan cara yang jelas dan cekap untuk bekerja dengan data merentas pelbagai skop, menjadikan kod lebih mudah dibaca dan diselenggara.
Atas ialah kandungan terperinci Bagaimanakah Kata Kunci `nonlocal` Python Berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!