Python periksa apakah ada variabel

Sebelum kita menyelami metode untuk memeriksa ketersediaan variabel dalam kode, pertama-tama mari kita pahami mengapa kita perlu melakukannya?

Untuk menjawab pertanyaan di atas, Anda harus memahami “apa itu NameError dan UnboundLocalError dengan Python?”

🐞  NameError dan UnboundLocalError dengan Python

📌 Dengan Python, jika Anda mencoba mengakses atau berinteraksi dengan nama variabel yang tidak ditentukan, Anda mendapatkan NameError: name 'variable_name' is not definedexception

Contoh

1

2

3

4

5

6

7

8

 

bilangan = [30,40,25,70,50,35]

bil = 40

untuk x dalam bilangan.

    jika x > num:

        add_up += 1

cetak(add_up)

 

Keluaran

Traceback (panggilan terbaru terakhir)
File “utama. py”, baris 5, di
tambah_tambah += 1
NameError. nama 'add_up' tidak ditentukan

❖ Karena variabel dengan nama 'add_up' tidak didefinisikan dalam kode kita pada contoh di atas, kita mendapat NameError

📌 Demikian pula, Anda mendapatkan pengecualian UnboundLocalError: local variable 'variable_name' referenced before assignment saat Anda merujuk variabel lokal sebelum menugaskannya di program Anda

Contoh

1

2

3

4

5

6

7

8

9

10

11

12

13

 

# Program untuk menemukan rata-rata angka

def total(num):

    l = len(num)

    untuk x di num:

        rata-rata += x / l

    kembali rata-rata

 

 

bilangan = [30, 10, 60, 20]

cetak('Rata-rata = ', total<(numbers))

 

 

Keluaran

Traceback (panggilan terbaru terakhir)
File “utama. py”, baris 10, di
print('Rata-rata = ', total(angka))
File “utama. py”, baris 5, secara total
rata-rata += x / l
UnboundLocalError. variabel lokal 'rata-rata' direferensikan sebelum penugasan

❖ Kami mendapat pengecualian UnboundLocalError karena variabel lokal dengan nama 'avg' direferensikan sebelum ditugaskan dalam program

⚡ Dengan demikian, pengecualian yang disebutkan di atas terjadi terutama karena alasan berikut. -
➥ Jika Anda lupa mendefinisikan variabel
➥ Jika Anda menggunakan nama variabel yang salah
➥ Atau jika Anda mencoba mengakses variabel sebelum mendefinisikannya

Kedua kesalahan ini cukup umum, terutama bagi pemula. Untuk memperbaikinya, Anda cukup mengedit program Anda dan secara manual menentukan variabel yang menyebabkan terjadinya kesalahan ini

Namun, jika kode Anda cukup panjang, akan sangat membosankan untuk menemukan setiap variabel yang tidak terdefinisi satu per satu di program Anda. Di sinilah Anda dapat memeriksa apakah ada variabel di tempat pertama sebelum menggunakannya

Baca Disini. [Terpecahkan] ValueError. tidak dapat mengonversi string menjadi float

Oleh karena itu, tanpa penundaan lebih lanjut, mari kita bahas metode untuk memeriksa apakah ada variabel dalam kode Python

✨ Metode 1. Menggunakan locals() dan globals()

locals() dan globals() adalah fungsi bawaan di Python yang dapat digunakan untuk memeriksa ketersediaan pengenal. Kedua fungsi ini masing-masing mengembalikan tabel simbol lokal dan global. Dengan demikian, Anda cukup memeriksa apakah suatu variabel ada secara lokal atau global menggunakan tabel simbol masing-masing

Larutan

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

 

a = 0

 

 

def centang().

    c = 0

    jika 'a' di global():  # memeriksa variabel bernama 'a' dalam variabel global

        cetak(Benar)

        jika 'b' di lokal():  # memeriksa 'b' dalam variabel lokal

            cetak(Benar)

        selain itu.

            cetak(Salah)

    jika 'c' di lokal():

        cetak(Benar)

 

 

periksa()

 

 

Keluaran

BENAR
PALSU
BENAR

✨ Metode 2. Menggunakan dir({object})

dir({object}) adalah metode bawaan di Python yang mengembalikan daftar metode dan atribut dari objek yang ditentukan

Larutan. Mari gabungkan metode dir() untuk memperbaiki NameError dalam contoh yang disebutkan sebelumnya

1

2

3

4

5

6

7

8

9

10

11

12

13

 

bilangan = [30, 40, 25, 70, 50, 35]

bil = 40

untuk x dalam bilangan.

    jika x > num:

        jika 'add_up' di dir():  # memeriksa variabel dalam daftar nama

            add_up += 1

        selain itu.

            add_up = 1

 

cetak("No. nilai > {} = {}". format(num, add_up))

 

 

Keluaran

Tidak. nilai > 40 = 2

✨ Metode 3. Menggunakan coba dan kecuali Blokir

Blok UnboundLocalError1 dan UnboundLocalError2 adalah salah satu solusi paling efektif ketika Anda harus berurusan dengan penanganan pengecualian di Python. Anda dapat menerapkan kode kesalahan di blok coba dan menanganinya di blok kecuali

Contoh

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

 

def total(num):

    l = len(num)

    untuk x di num:

        coba.

            rata-rata += x / l  # error code

        kecuali.

            rata-rata = x / l  # exception handling code

    kembali rata-rata

 

 

bilangan = [30, 10, 60, 20]

cetak('Rata-rata = ', total<(numbers))

 

 

Keluaran

Rata-rata = 30. 0

✨ Metode 4. Menggunakan vars([objek])

  • UnboundLocalError3 adalah metode bawaan lain di Python yang mengembalikan atribut UnboundLocalError4_ untuk modul, kelas, instance, atau objek lain dengan atribut __dict__. Di sini, UnboundLocalError_5 mengacu pada kamus yang menyimpan atribut objek (dapat ditulis)
  • Tanpa argumen apa pun, UnboundLocalError_3 bertindak seperti metode locals() dan mengembalikan kamus dari namespace saat ini

Larutan. Mari terapkan metode ini untuk memperbaiki UnboundLocalError dalam contoh yang disebutkan sebelumnya

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

 

def total(num):

    l = len(num)

    untuk x di num:

        jika 'rata-rata' di vars():  # memeriksa 'avg' di __dict__ menggunakan metode vars()

            rata-rata += x / l

        selain itu.

            rata-rata = x / l

    kembali rata-rata

 

 

bilangan = [30, 10, 60, 20]

cetak('Rata-rata = ', total<(numbers))

 

 

 

Keluaran

Rata-rata = 30. 0

❖ __dict__

Anda juga dapat langsung memeriksa variabel menggunakan UnboundLocalError5atribut kelas atau modul, atau instance

Contoh

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

 

# Memeriksa variabel yang ada di kelas bernama Variabel

kelas Variabel().

    def __init__(self, a):

        diri sendiri. a = a

        diri sendiri. periksa()

 

    def periksa(self):

        jika 'a' dalam diri.__dict__.   # mengakses __dict__ dengan objek kelas

            cetak('a =', self.a)

        selain itu.

            cetak("'a' tidak didefinisikan")

        jika 'b' dalam diri.__dict__.

            cetak('b =', self.b)

        selain itu.

            cetak("b tidak ditentukan")

 

 

obj = Variabel(1)

 

 

Keluaran

a = 1
b tidak ditentukan

Dengan demikian, kami dapat memeriksa keberadaan beberapa variabel menggunakan UnboundLocalError5 dalam contoh kami di atas

Bagaimana Anda memeriksa apakah ada variabel atau tidak di Python?

Untuk memeriksa keberadaan variabel secara global, kita akan menggunakan fungsi globals() untuk mendapatkan kamus tabel simbol global saat ini .

Bagaimana Anda memeriksa apakah suatu variabel sudah ada?

Jawab. Gunakan jenis operator . e. menguji apakah suatu variabel telah dideklarasikan dan diberi nilai) Anda dapat menggunakan operator typeof.