> 백엔드 개발 > 파이썬 튜토리얼 > Python 2.7에서 `input()`이 `NameError`를 일으키는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Python 2.7에서 `input()`이 `NameError`를 일으키는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-30 22:38:18
원래의
514명이 탐색했습니다.

Why Does `input()` Cause a `NameError` in Python 2.7, and How Can I Fix It?

input() 오류: NameError 해결 'Name'이 정의되지 않았습니다.

간단한 스크립트를 실행하려고 하면 사용자에게 다음 오류가 발생할 수 있습니다.

NameError: name '...' is not defined
로그인 후 복사

이 오류는 사용자 입력을 Python 표현식으로 평가하는 input() 함수와 함께 Python 2.7을 사용할 때 발생합니다. 문자열 입력을 기대할 때 이 평가는 혼란을 초래할 수 있습니다.

Python 2.7 특수성

Python 2.7은 사용자 입력에 대해 두 가지 옵션을 제공합니다.

  • 입력 : Python으로 입력을 평가합니다. 표현식.
  • raw_input: 평가 없이 입력을 문자열로 읽습니다.

Python 2.7에서는 다음이 true입니다.

input = eval(raw_input)
로그인 후 복사

따라서 input("Enter your name: ")을 사용할 때 입력 문자열(예: "dude")은 다음과 같습니다. 변수 이름으로 평가됩니다. 스크립트에 "dude"라는 변수가 없으면 오류가 발생합니다.

Python 2.7의 input()에 대한 보안 문제

input()의 평가 기능은 보안에 영향을 미칩니다. 예를 들어 os 모듈을 가져오고 사용자가 "os.remove("/etc/hosts")"를 입력하면 이 Python 표현식이 실행되어 잠재적으로 시스템에 해를 끼칠 수 있습니다.

Python 3.x 및 너머

Python 3.x에는 Python 2.7의 raw_input()을 본질적으로 모방하는 input() 함수가 하나만 있습니다. 이는 평가 측면을 제거하고 입력 프로세스를 단순화합니다.

솔루션 및 권장 사항

문자열 입력을 읽을 때 Python 2.7에서 NameError를 해결하려면 입력 대신 raw_input 함수를 사용하는 것이 좋습니다. 이렇게 하면 입력이 문자열로 처리되고 Python 표현식으로 평가되지 않습니다. 추가 처리 또는 변환이 필요한 경우 문자열 입력을 처리하기 위해 적절한 기능을 사용할 수 있습니다.

위 내용은 Python 2.7에서 `input()`이 `NameError`를 일으키는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿