Dalam cuba melaksanakan skrip yang mudah, pengguna mungkin menghadapi ralat berikut:
NameError: name '...' is not defined
Ralat ini timbul apabila menggunakan Python 2.7 dengan fungsi input(), yang menilai input pengguna sebagai Python ungkapan. Apabila mengharapkan input rentetan, penilaian ini boleh menyebabkan kekeliruan.
Python 2.7 menawarkan dua pilihan untuk input pengguna:
Dalam Python 2.7, perkara berikut berlaku:
input = eval(raw_input)
Oleh itu, apabila menggunakan input("Masukkan nama anda:"), rentetan input, cth., "dude," dinilai sebagai pembolehubah nama. Jika tiada pembolehubah bernama "dude" wujud dalam skrip, ralat akan dilemparkan.
Ciri penilaian input() menimbulkan implikasi keselamatan. Contohnya, jika modul os diimport dan pengguna memasukkan "os.remove("/etc/hosts")", ungkapan Python ini dilaksanakan dan berpotensi membahayakan sistem.
Dalam Python 3.x, hanya terdapat satu fungsi input(), yang pada asasnya meniru raw_input() Python 2.7. Ini menghapuskan aspek penilaian dan memudahkan proses input.
Untuk menyelesaikan NameError dalam Python 2.7 apabila membaca input rentetan, adalah dinasihatkan untuk menggunakan fungsi raw_input dan bukannya input. Ini memastikan bahawa input dianggap sebagai rentetan dan tidak dinilai sebagai ungkapan Python. Jika pemprosesan atau penukaran selanjutnya diperlukan, fungsi yang sesuai boleh digunakan untuk mengendalikan input rentetan.
Atas ialah kandungan terperinci Mengapakah `input()` Menyebabkan `NameError` dalam Python 2.7, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!