Rumah >pembangunan bahagian belakang >Tutorial Python >Adakah Fungsi `eval()` Python Selamat Digunakan dengan `input()`?

Adakah Fungsi `eval()` Python Selamat Digunakan dengan `input()`?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-10 00:25:11564semak imbas

Is Python's `eval()` Function Safe to Use with `input()`?

Fungsi eval() Python dan Kesannya pada input()

Dalam pengaturcaraan Python, fungsi eval() ialah alat berkuasa yang membenarkan program untuk melaksanakan kod secara dinamik. Ini mempunyai beberapa implikasi apabila digunakan dengan fungsi input(), yang mendapatkan semula input pengguna daripada baris arahan atau antara muka pengguna.

Cara eval() Mengubah input() Output

Apabila anda menghantar output input() kepada eval(), Python menilai rentetan input sebagai kod Python. Ini bermakna bahawa input tidak lagi dianggap sebagai rentetan mudah tetapi sebagai ungkapan Python yang boleh dilaksanakan. Sebagai contoh, jika pengguna memasukkan rentetan "2 3" ke dalam fungsi input(), coretan kod berikut:

user_input = input('Enter an expression: ')
result = eval(user_input)

...akan memberikan nilai 5 kepada pembolehubah hasil. Ini kerana eval() mentafsir input pengguna sebagai ungkapan Python dan melaksanakannya sebagai operasi matematik.

Nota Awas

1. Risiko Keselamatan:

Seperti yang dinyatakan dalam nota, menggunakan eval() pada input yang tidak dipercayai (cth., input pengguna) boleh memperkenalkan risiko keselamatan yang serius. Pengguna berniat jahat boleh memasukkan kod yang boleh melaksanakan arahan sewenang-wenangnya dalam program anda.

2. Pengendalian Ralat:

Perlu diingat bahawa eval() boleh membuang pengecualian jika rentetan input tidak boleh dinilai sebagai ungkapan Python yang sah atau jika ungkapan menghasilkan ralat masa jalan. Oleh itu, adalah penting untuk menangani kemungkinan ralat menggunakan teknik pengendalian pengecualian.

Atas ialah kandungan terperinci Adakah Fungsi `eval()` Python Selamat Digunakan dengan `input()`?. 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