我寫一個函數,它接受用戶輸入:捕捉NameError和錯誤處理
def func(input):
我把嘗試和節選,以確保輸入是我想要的類型。但是,當我放入testInput時,它會拋出一個NameError與「testInput」。
我明白爲什麼,因爲它認爲testInput是一個變量名,而它知道「testInput」是一個字符串。
有沒有一種智能的方法來捕捉這個錯誤?
我寫一個函數,它接受用戶輸入:捕捉NameError和錯誤處理
def func(input):
我把嘗試和節選,以確保輸入是我想要的類型。但是,當我放入testInput時,它會拋出一個NameError與「testInput」。
我明白爲什麼,因爲它認爲testInput是一個變量名,而它知道「testInput」是一個字符串。
有沒有一種智能的方法來捕捉這個錯誤?
NameError通常是由未定義的變量名稱造成的。如果使用testInput
作爲變量名稱,即不帶引號,則必須先定義它。嘗試是這樣的:
testInput = "my_input_test"
func(testInput)
或者你可以只使用字符串本身作爲參數:
func("my_input_test")
有時錯別字也可以導致未定義的變量名,然後NameError
。
聲音就像你的try ... except
聲明在你的函數中,錯誤發生在函數體執行之前,所以你不能在函數體內捕獲它。爲了演示如何捕獲這個錯誤,你可以嘗試下面的代碼。
# !!! DEMO ONLY. DON'T DO THIS.
try:
func(testInput)
except NameError:
# Your code here
重要:NameErrors通常是你需要修復您的變量/功能/類名的指示。使用try ... except
來捕捉它們通常是一種不好的做法,並且會導致混亂且不可用的代碼。
我不認爲這裏有足夠的信息來充分回答你的問題。你能提供一個實際的函數和調用代碼的例子嗎? – 2011-03-03 21:43:44