Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Adakah `example = list(...)` Kadangkala Melemparkan `TypeError: objek 'list' tidak boleh dipanggil`?

Mengapa Adakah `example = list(...)` Kadangkala Melemparkan `TypeError: objek 'list' tidak boleh dipanggil`?

Mary-Kate Olsen
Lepaskan: 2024-12-07 09:35:12
asal
510 orang telah melayarinya

Why Does `example = list(...)` Sometimes Throw a `TypeError: 'list' object is not callable`?

Mengapa "example = list(...)" Menghasilkan "TypeError: 'list' Object Is Not Callable"?

Di REPL, apabila anda mencuba kod "example = list('easyhoss')", menjangkakan pembolehubah contoh memegang senarai aksara daripada rentetan, anda mengalami ralat: "TypeError: objek 'senarai' tidak boleh dipanggil".

Ini berlaku kerana anda secara tidak sengaja menimpa "senarai" kelas Python terbina dalam dengan contoh senarai. Apabila anda merujuk "senarai" kemudian dalam "example = list('easyhoss')", Python mentafsirkannya sebagai contoh, yang tidak boleh dipanggil.

Untuk memahami perkara ini, kita mesti meneroka ruang nama dan mekanisme skop Python.

Ruang nama: Python menggunakan ruang nama bersarang untuk menyimpan nama objek (termasuk kelas dan fungsi). Setiap modul mempunyai ruang nama sendiri, termasuk fungsi dan kelas terbina dalam.

Skop: Apabila merujuk nama, Python menyemak ruang nama setempat terlebih dahulu. Jika tidak ditemui, ia bergerak ke ruang nama peringkat lebih tinggi sehingga ia mencari nama atau tidak menemui ruang nama lagi (mengakibatkan NameError).

Dalam kes anda, anda secara tidak sedar telah memberikan contoh "senarai" kepada pembolehubah "senarai" global:

example = list('easyhoss')  # "list" refers to the built-in class
list = list('abc')  # Creates a "list" variable referencing an instance of "list"
example = list('easyhoss')  # "list" refers to the instance, resulting in the error
Salin selepas log masuk

Tulisan ganti ini menyembunyikan kelas "senarai" terbina dalam, menyebabkan "TypeError."

Untuk mengelakkan ralat ini, gunakan IDE seperti PyCharm atau Atom dengan pemalam Python yang menyerlahkan pembayang nama.

Pertimbangan Tambahan:

  • "senarai" ialah kelas boleh panggil yang mencetuskan contoh penciptaan.
  • Instance "senarai" (senarai[]) tidak boleh dipanggil.
  • Untuk mendapatkan maklumat lanjut tentang kelas dan kejadian, rujuk dokumentasi Python.

Apabila anda melancarkan sesi Python interaktif, anda mencipta modul sementara dengan ruang nama sendiri, yang juga boleh memberi kesan kepada tingkah laku ruang nama.

Atas ialah kandungan terperinci Mengapa Adakah `example = list(...)` Kadangkala Melemparkan `TypeError: objek 'list' tidak boleh dipanggil`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan