Kata Kunci "bukan tempatan" Python 3: A Deep Dive
Kata kunci "nonlocal" mempunyai tujuan yang berharga dalam Python 3, menyediakan akses kepada pembolehubah diisytiharkan dalam skop yang disertakan tanpa menggunakan kata kunci global yang dikhaskan. Fungsi bernuansa ini membolehkan kawalan luar biasa ke atas rujukan pembolehubah dalam fungsi bersarang.
Menyingkap Peranan bukan tempatan
Pertimbangkan coretan kod berikut tanpa kata kunci "bukan tempatan":
x = 0 def outer(): x = 1 def inner(): x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
Apabila dilaksanakan, kod ini menghasilkan yang berikut output:
inner: 2 outer: 1 global: 0
Seperti yang anda boleh perhatikan, pembolehubah "x" dalam fungsi dalam adalah bebas daripada pembolehubah "x" dalam fungsi luar. Ini kerana pembolehubah "x" fungsi dalaman diutamakan dalam skopnya sendiri.
Sebaliknya, memperkenalkan kata kunci "bukan tempatan" mengubah tingkah laku:
x = 0 def outer(): x = 1 def inner(): nonlocal x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
Dengan pengubahsuaian ini, output berubah kepada:
inner: 2 outer: 2 global: 0
Kata kunci "bukan tempatan" membenarkan fungsi dalaman untuk merujuk dan mengubah suai Pembolehubah "x" yang diisytiharkan dalam fungsi luar.
bukan tempatan lwn global
Adalah penting untuk mengambil perhatian perbezaan antara "bukan tempatan" dan "global". Walaupun kedua-dua kata kunci membenarkan pembolehubah diakses daripada skop bersarang, kata kunci tersebut mempunyai tujuan yang berbeza. "nonlocal" mengehadkan akses kepada pembolehubah yang ditakrifkan hanya dalam skop yang dilampirkan, manakala "global" menyediakan akses kepada pembolehubah yang ditakrifkan dalam skop global.
Untuk pemahaman yang lebih baik, pertimbangkan kod berikut menggunakan kata kunci "global":
x = 0 def outer(): x = 1 def inner(): global x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
Dalam kes ini, output menjadi:
inner: 2 outer: 1 global: 2
"global" kata kunci mengikat "x" kepada pembolehubah yang diisytiharkan secara global sebenar, mengatasi mana-mana pembolehubah tempatan atau tertutup dengan nama yang sama.
Kesimpulan
Kata kunci "bukan tempatan" dalam Python 3 menawarkan alat yang berkuasa untuk mengurus rujukan pembolehubah dalam fungsi bersarang. Ia membolehkan pembolehubah yang diisytiharkan dalam skop tertutup boleh diakses dan diubah suai dalam skop dalaman, memberikan tahap kawalan yang lebih halus ke atas penggunaan pembolehubah dalam struktur kod yang kompleks.
Atas ialah kandungan terperinci Bagaimanakah Kata Kunci `bukan tempatan` Python 3 Berbeza daripada `global` dalam Skop Fungsi Bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!