2011-02-26 2 views
1

처리. 그러나 testInput에 넣을 때 NameError와 "testInput"을 던집니다.내가 사용자의 입력을받는 함수를 쓰고 있어요 나가서 설명하자면 NameError을 잡기 및 오류

"testInput"이 문자열이라는 것을 알고있는 동안 testInput이 변수 이름이라고 생각하는 이유를 이해합니다.

이 오류를 잡는 데 지능적인 방법이 있습니까?

+0

귀하의 질문에 적절하게 답변하기에 충분한 정보가 여기 있다고 생각하지 않습니다. 함수와 호출 코드의 실제 예제를 제공 할 수 있습니까? –

답변

4

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를 사용하여 일반적으로 나쁜 연습이고 지저분하고 사용하기 어려운 부호로 이끌어 낼 것이다.

+0

'NameError'를 잡는 것은 좋지 않습니다. 대신 코드를 수정해야합니다. – jfs

+0

@ J.F. 당신의 의견에 완전히 찬성합니다. 나는 마지막 문장에서 그것을 언급했다. –

+0

이것은 잘못된 코드 조각이 교과서에 존재해서는 안되며, 적어도 두드러진 경고가 있어야한다는 일반적인 규칙을 확인합니다. "하지 마십시오". – jfs

관련 문제