Rumah >pembangunan bahagian belakang >Tutorial Python >Python 2.7 lwn. 3.x: Mengapakah `input()` Menyebabkan `NameError: name '...' tidak ditakrifkan`?

Python 2.7 lwn. 3.x: Mengapakah `input()` Menyebabkan `NameError: name '...' tidak ditakrifkan`?

Linda Hamilton
Linda Hamiltonasal
2024-12-25 18:43:41330semak imbas

Python 2.7 vs. 3.x:  Why Does `input()` Cause a `NameError: name '...' is not defined`?

Ralat Input(): Memahami NamaRalat: Nama '...' Tidak Ditakrifkan

Dalam Python 2.7 dan 3.x, fungsi input() digunakan untuk menerima input pengguna. Walau bagaimanapun, terdapat perbezaan yang ketara dalam kelakuan input() dalam versi ini.

Python 2.7

Dalam Python 2.7, fungsi input() menilai rentetan dimasukkan oleh pengguna sebagai ungkapan Python. Ini bermakna jika anda memasukkan nama pembolehubah atau fungsi sedia ada, fungsi input() akan mengembalikan nilai pembolehubah itu atau melaksanakan fungsi itu.

Sebagai contoh, jika anda mempunyai pembolehubah bernama 'dude' dengan nilai 'thefourtheye,' menaip 'dude' ke dalam fungsi input() akan mengembalikan 'thefourtheye.' Walau bagaimanapun, jika anda memasukkan nama yang tidak ditakrifkan dalam konteks semasa, anda akan mendapat NameError.

Python 3.x

Dalam Python 3.x, fungsi input() adalah bersamaan dengan fungsi raw_input() daripada Python 2.7. Ia hanya membaca baris daripada input standard dan mengembalikannya sebagai rentetan tanpa menilainya.

Ini bermakna anda tidak lagi boleh memasukkan nama pembolehubah atau fungsi ke dalam fungsi input() dan mengharapkan ia mengembalikan nilainya. Sebaliknya, input() akan sentiasa mengembalikan rentetan, yang kemudian anda boleh tukar kepada jenis yang sesuai (cth., int atau float) jika perlu.

Pertimbangan Keselamatan

Fakta bahawa input() menilai input pengguna dalam Python 2.7 boleh menimbulkan risiko keselamatan. Jika pengguna memasukkan kod hasad, ia boleh dilaksanakan oleh penterjemah Python. Oleh itu, adalah penting untuk berhati-hati tentang cara anda menggunakan input() dalam kod anda.

Dalam Python 3.x, risiko keselamatan yang dikaitkan dengan input() dikurangkan dengan ketara kerana input pengguna tidak dinilai. Walau bagaimanapun, masih merupakan amalan yang baik untuk membersihkan input pengguna sebelum menggunakannya dalam kod anda.

Atas ialah kandungan terperinci Python 2.7 lwn. 3.x: Mengapakah `input()` Menyebabkan `NameError: name '...' tidak ditakrifkan`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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