嘗試執行使用輸入函數的腳本時,您可能會遇到錯誤「NameError: name ' . ..' 沒有定義。
在 Python 2.7 中,輸入函數執行獨特的行為。它將使用者的輸入解釋為 Python 表達式。如果腳本需要一個字串,則輸入不應包含在引號中。但是,當需要一個字串但用引號引起來時,由於存在額外的引號,就會發生錯誤。
例如:
input_variable = input("Enter your name: ") # Expecting a string without quotes print("Your name is " + input_variable) # Error: NameError
要在 Python 2.7 中修正此問題,請改用 raw_input 函式。該函數只是讀取使用者的輸入,而不將其解釋為 Python 表達式。
input_variable = raw_input("Enter your name: ") # Expecting a string with quotes print("Your name is " + input_variable) # No error
在 Python 3.x 中,raw_input 函數已被重新命名輸入。因此,它的行為方式與 Python 2.7 中的 raw_input 類似:它將使用者的輸入讀取為字串而不進行解釋。
由於 Python 中的輸入2.7 評估使用者輸入,這會帶來安全問題。如果惡意使用者輸入未經正確清理或驗證的命令,則可能會執行惡意程式碼。例如,如果腳本導入了os 模組並且使用者輸入以下內容作為輸入:
os.remove("/etc/hosts")
這可能會導致/etc/hosts 檔案被刪除,突出顯示使用raw_input 的重要性用於讀取敏感的使用者輸入。
以上是為什麼 Python 的 `input()` 函數會導致「NameError」以及如何避免它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!