Pemboleh ubah Python Global, Local dan Nonlocal (Dengan Contoh)

Dalam tutorial ini, anda akan belajar mengenai pemboleh ubah Global Python, Pemboleh ubah tempatan, pemboleh ubah Nonlokal dan di mana menggunakannya.

Video: Pemboleh ubah Tempatan dan Global Python

Pemboleh ubah Global

Di Python, pemboleh ubah yang dinyatakan di luar fungsi atau dalam skop global dikenali sebagai pemboleh ubah global. Ini bermaksud bahawa pemboleh ubah global dapat diakses di dalam atau di luar fungsi.

Mari kita lihat contoh bagaimana pemboleh ubah global dibuat di Python.

Contoh 1: Buat Pembolehubah Global

 x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)

Pengeluaran

 x dalam: global x luar: global

Dalam kod di atas, kami membuat x sebagai pemboleh ubah global dan menentukan a foo()untuk mencetak pembolehubah global x. Akhirnya, kita memanggil yang foo()mana akan mencetak nilai x.

Bagaimana jika anda mahu menukar nilai x di dalam fungsi?

 x = "global" def foo(): x = x * 2 print(x) foo()

Pengeluaran

 UnboundLocalError: pemboleh ubah tempatan 'x' yang dirujuk sebelum tugasan

Keluaran menunjukkan ralat kerana Python memperlakukan x sebagai pemboleh ubah tempatan dan x juga tidak ditentukan di dalamnya foo().

Untuk menjayakan ini, kami menggunakan globalkata kunci. Lawati Python Global Keyword untuk mengetahui lebih lanjut.

Pemboleh ubah Tempatan

Pemboleh ubah yang dinyatakan di dalam badan fungsi atau dalam skop tempatan dikenali sebagai pemboleh ubah tempatan.

Contoh 2: Mengakses pemboleh ubah tempatan di luar skop

 def foo(): y = "local" foo() print(y)

Pengeluaran

 NameError: nama 'y' tidak ditentukan

Keluaran menunjukkan ralat kerana kami berusaha mengakses pemboleh ubah tempatan y dalam skop global sedangkan pemboleh ubah tempatan hanya berfungsi di dalam foo()atau skop tempatan.

Mari kita lihat contoh bagaimana pemboleh ubah tempatan dibuat di Python.

Contoh 3: Buat Pembolehubah Tempatan

Biasanya, kita menyatakan pemboleh ubah di dalam fungsi untuk membuat pemboleh ubah tempatan.

 def foo(): y = "local" print(y) foo()

Pengeluaran

 tempatan

Mari kita lihat masalah sebelumnya di mana x adalah pemboleh ubah global dan kita mahu mengubah suai x di dalamnya foo().

Pemboleh ubah global dan tempatan

Di sini, kami akan menunjukkan cara menggunakan pemboleh ubah global dan pemboleh ubah tempatan dalam kod yang sama.

Contoh 4: Menggunakan pemboleh ubah Global dan Lokal dalam kod yang sama

 x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()

Pengeluaran

 global global tempatan

Dalam kod di atas, kami menyatakan x sebagai global dan y sebagai pemboleh ubah tempatan di foo(). Kemudian, kami menggunakan operator pendaraban *untuk mengubah pembolehubah global x dan kami mencetak kedua-dua x dan y.

Setelah memanggil foo(), nilai x menjadi global globalkerana kami menggunakan x * 2untuk mencetak dua kali global. Selepas itu, kami mencetak nilai pemboleh ubah tempatan y iaitu local.

Contoh 5: Pemboleh ubah global dan pemboleh ubah tempatan dengan nama yang sama

 x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)

Pengeluaran

 tempatan x: 10 global x: 5

Dalam kod di atas, kami menggunakan nama x yang sama untuk pemboleh ubah global dan pemboleh ubah tempatan. Kami mendapat hasil yang berbeza ketika kami mencetak pemboleh ubah yang sama kerana pemboleh ubah dinyatakan dalam kedua-dua ruang lingkup, iaitu skop tempatan di dalam foo()dan skop global di luar foo().

When we print the variable inside foo() it outputs local x: 10. This is called the local scope of the variable.

Similarly, when we print the variable outside the foo(), it outputs global x: 5. This is called the global scope of the variable.

Nonlocal Variables

Nonlocal variables are used in nested functions whose local scope is not defined. This means that the variable can be neither in the local nor the global scope.

Let's see an example of how a nonlocal variable is used in Python.

We use nonlocal keywords to create nonlocal variables.

Example 6: Create a nonlocal variable

 def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()

Output

 inner: nonlocal outer: nonlocal

Dalam kod di atas, terdapat inner()fungsi bersarang . Kami menggunakan nonlocalkata kunci untuk membuat pemboleh ubah bukan setempat. Yang inner()fungsi ditakrifkan dalam skop fungsi yang lain outer().

Catatan : Sekiranya kita mengubah nilai pemboleh ubah bukan lokal, perubahan akan muncul dalam pemboleh ubah tempatan.

Artikel menarik...