입력 함수 오류 해결: 'NameError: name '...'' 정의되지 않음
Python의 입력 함수(특히 버전) 3.x 이전에는 사용자 입력을 처리할 때 특별한 문제가 있었습니다. "NameError: name '...''이(가) 정의되지 않았습니다."라는 오류는 입력의 평가 특성에서 비롯됩니다.
Python 2.7에서 입력은 사용자 입력을 받아들일 뿐만 아니라 이를 다음과 같이 평가합니다. 파이썬 표현. 이는 "dude"와 같은 변수 이름을 입력하면 입력이 이를 프로그램의 바인딩된 변수로 해석하려고 시도한다는 의미입니다. 해당 변수가 없으면 오류가 발생합니다.
Python 2.7 입력의 함정 방지
이러한 잠재적인 보안 위험을 피하려면 raw_input으로 전환하는 것을 고려하세요. Python 3.x의 입력 이전 버전입니다. raw_input은 사용자 입력을 실행하지 않고 단순히 읽습니다.
Python 3.x에서 입력은 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" 값이 할당됩니다.
이를 다음과 대조해 보세요. 코드:
input_variable = raw_input("Enter your name: ")
이 경우 input_variable에는 문자열 "dude" 자체가 할당됩니다. 평가.
보안 고려 사항
Python 2.7의 입력 평가 기능은 보안 문제를 야기합니다. 예를 들어, os 모듈을 임포트하고 사용자가 "os.remove('/etc/hosts')"를 입력하면 함수 호출로 실행됩니다. 이러한 위험을 완화하려면 사용자 입력이 실수로 코드로 평가되지 않도록 항상 raw_input 사용을 고려하세요.
위 내용은 내 Python 입력 함수에서 'NameError: name '...'이(가) 정의되지 않았습니다.'가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!