解決輸入函數錯誤:'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中文網其他相關文章!