Mentakrifkan Semula Terbina Dalam Membawa kepada TypeError dalam Penukaran Rentetan
Ini menerangkan sebab pemberian kod kepada str dalam fungsi mencetuskan TypeError pada panggilan berikutnya kepada fungsi itu, tidak seperti percubaan awal. Coretan kod berikut menunjukkan isu:
def example(parameter): global str # Declares str as a global variable str = str(parameter) # Redefines str as a string print(str) example(1) # First call: successful string conversion example(2) # Second call: raises a TypeError
Punca Punca dan Penyelesaian
Pernyataan global dalam coretan pada dasarnya mentakrifkan semula str, yang merupakan jenis terbina dalam mewakili rentetan. Menetapkan nilai baharu kepada str() mengatasi kefungsian lalainya sebagai fungsi untuk menukar objek kepada rentetan.
Untuk menyelesaikan isu ini, gunakan nama lain untuk pembolehubah setempat dalam fungsi dan alih keluar pernyataan global. Contohnya:
def example(parameter): local_str = str(parameter) # Local variable with a different name print(local_str) example(1) # First call: successful string conversion example(2) # Second call: successful string conversion
Implikasi Cangkang Python Interaktif
Jika anda menghadapi isu ini dalam cangkerang interaktif, penugasan kepada str() global berterusan melainkan ditangani secara eksplisit. Satu kaedah untuk menyelesaikannya ialah dengan memulakan semula jurubahasa. Sebagai alternatif, anda boleh mengalih keluar tugasan secara manual menggunakan:
del str
Ingat bahawa str bukan pembolehubah global yang ditentukan secara lalai; ia biasanya ditemui dalam modul builtins yang diimport semasa Python mula dimulakan.
Atas ialah kandungan terperinci Mengapakah Mentakrifkan Semula Fungsi `str` Terbina dalam Membawa kepada Ralat Jenis dalam Penukaran Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!