首頁 >後端開發 >Python教學 >Python 2.7 與 3.x:為什麼 `input()` 會導致 `NameError: name '...' is not Define`?

Python 2.7 與 3.x:為什麼 `input()` 會導致 `NameError: name '...' is not Define`?

Linda Hamilton
Linda Hamilton原創
2024-12-25 18:43:41338瀏覽

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

Input() 錯誤:理解NameError: Name '...' 未定義

在Python 2.7 和3.x 中, input () 函數用於接受使用者輸入。但是,這些版本中 input() 的行為有細微差別。

Python 2.7

在 Python 2.7 中,input() 函數計算字串由使用者作為 Python 表達式輸入。這意味著,如果您輸入現有變數或函數的名稱,則 input() 函數將傳回該變數的值或執行該函數。

例如,如果您有一個名為“dude”的變數如果值為“thefourtheye”,則在 input() 函數中輸入“dude”將傳回“thefourtheye”。但是,如果您輸入目前上下文中未定義的名稱,則會收到 NameError。

Python 3.x

在 Python 3.x 中, input() 函數相當於 Python 2.7 中的 raw_input() 函數。它只是從標準輸入中讀取一行並將其作為字串返回,而不對其進行評估。

這表示您不能再在 input() 函數中輸入變數或函數名稱並期望它會傳回它們的值。相反,input() 將始終傳回字串,然後您可以根據需要將其轉換為適當的類型(例如 int 或 float)。

安全注意事項

事實上,input() 在 Python 2.7 中評估使用者輸入可能會帶來安全風險。如果使用者輸入惡意程式碼,它可能會被Python解釋器執行。因此,請務必小心如何在程式碼中使用 input()。

在 Python 3.x 中,由於不評估使用者輸入,因此與 input() 相關的安全風險顯著降低。然而,在程式碼中使用使用者輸入之前對其進行清理仍然是一個很好的做法。

以上是Python 2.7 與 3.x:為什麼 `input()` 會導致 `NameError: name '...' is not Define`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn