Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Mentakrifkan Semula `str` Menyebabkan `TypeError` dalam Panggilan Fungsi Python Seterusnya?

Mengapa Mentakrifkan Semula `str` Menyebabkan `TypeError` dalam Panggilan Fungsi Python Seterusnya?

DDD
Lepaskan: 2024-12-18 18:34:17
asal
378 orang telah melayarinya

Why Does Redefining `str` Cause a `TypeError` in Subsequent Python Function Calls?

Mentakrifkan semula str Menyebabkan Ralat Jenis dalam Pelaksanaan Kedua

Kod Python yang disediakan mempamerkan tingkah laku yang pelik, di mana panggilan ke contoh(1) dilaksanakan tanpa masalah , tetapi contoh(2) mencetuskan TypeError. Fenomena yang membingungkan ini berpunca daripada urutan kod yang bermasalah:

global str
str = str(parameter)
Salin selepas log masuk

Dalam blok ini, kod memberikan nilai str(parameter) kepada pembolehubah str global. Takrifan semula ini pada asasnya mengatasi nama Python terbina dalam jenis rentetan, menyebabkan konflik dengan operasi seterusnya.

Masalahnya

Fungsi str() terbina dalam ialah digunakan untuk menukar objek kepada rentetan. Dengan mentakrifkan semula str dengan str(parameter), kod secara berkesan menggantikan fungsi asal dengan pembolehubah tersuai yang memegang nilai parameter yang ditukar.

Akibatnya, dalam panggilan kedua ke contoh(2), apabila kod cuba menggunakan str sekali lagi, ia bukan lagi fungsi tetapi sebaliknya objek rentetan. Akibatnya, jurubahasa menimbulkan TypeError kerana objek rentetan tidak boleh dipanggil seperti fungsi.

Penyelesaian

Untuk membetulkan isu ini, elakkan daripada mengubah suai nama str terbina dalam . Sebaliknya, tetapkan nama yang berbeza kepada pembolehubah tempatan yang menyimpan nilai yang ditukar. Selain itu, alih keluar pernyataan global, yang tidak diperlukan kerana pembolehubah tempatan tidak mengubah suai mana-mana pembolehubah global sedia ada.

Berikut ialah kod yang diperbetulkan:

def example(parameter):
    s = str(parameter)  # Use a different name for the local variable
    print(s)  # Use the newly created local variable

example(1)
example(2)
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Mentakrifkan Semula `str` Menyebabkan `TypeError` dalam Panggilan Fungsi Python Seterusnya?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan