首頁 > 後端開發 > Python教學 > 為什麼我的 Python 輸入函數會拋出'NameError:名稱'...'未定義”?

為什麼我的 Python 輸入函數會拋出'NameError:名稱'...'未定義”?

Patricia Arquette
發布: 2025-01-01 05:35:10
原創
245 人瀏覽過

Why Does My Python Input Function Throw a

解決輸入函數錯誤:'NameError: name '...'' Not Defined

Python 中的輸入函數,特別是在版本中3.x 之前的版本在處理使用者輸入時提出了特殊的挑戰。您遇到的錯誤「NameError:name '...''未定義」源自於輸入的評估性質。

在Python 2.7中,輸入不僅接受使用者輸入,也將其評估為Python 表達式。這意味著,如果您輸入變數名稱,例如“dude”,輸入將嘗試將其解釋為程式中的綁定變數。如果不存在這樣的變量,就會發生錯誤。

避免 Python 2.7 輸入的陷阱

為了避免這種潛在的安全隱患,請考慮切換到 raw_input, Python 3.x 中輸入的前身。 raw_input 只是讀取使用者輸入而不執行它。

在 Python 3.x 中,input 有效地取代了 raw_input,提供相同的功能。但是,Python 3.x 文件警告說,如果您需要舊的輸入行為,可以使用 eval(input())。

理解區別

為了說明input 和raw_input 之間的區別,讓我們考慮以下Python 2.7 代碼:

dude = "thefourtheye"
input_variable = input("Enter your name: ")
登入後複製

當輸入「 dude”作為輸入,input_variable 將被分配值“thefourtheye”,因為dude是程式中定義的變數。

將其與以下程式碼進行對比:

input_variable = raw_input("Enter your name: ")
登入後複製

中在這種情況下,input_variable將被分配字串「dude」本身,而不進行任何評估。

安全性注意事項

Python 2.7 輸入的評估功能引發了安全問題。例如,如果 os 模組已匯入且使用者輸入“os.remove('/etc/hosts')”,它將作為函數呼叫執行。為了減輕這些風險,請務必考慮使用 raw_input 以確保使用者輸入不會無意中被評估為代碼。

以上是為什麼我的 Python 輸入函數會拋出'NameError:名稱'...'未定義”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板