[python] 파이썬 3에서`raw_input ()`과`input ()`의 차이점은 무엇입니까?

파이썬 3 raw_input()과 차이점은 무엇입니까 input()?



답변

차이점은 raw_input()파이썬 3.x에는 존재 input()하지 않는다는 것입니다. 사실, 이전은 raw_input()이름이 변경되었습니다 input(), 그리고 이전은 input()사라지고 있지만, 쉽게 사용하여 시뮬레이션 할 수 있습니다 eval(input()). ( eval()이것은 악한 것을 기억하십시오 . 가능하다면 입력을보다 안전하게 분석하는 방법을 사용하십시오.)


답변

Python 2 에서 raw_input()문자열을 반환 input()하고 입력을 Python 표현식으로 실행하려고합니다.

문자열을 얻는 것이 거의 항상 원하는 것이기 때문에 Python 3은 input(). 스벤이 말했듯이 오래된 행동을 원한다면 eval(input())효과가 있습니다.


답변

파이썬 2 :

  • raw_input() 사용자가 입력 한 내용을 그대로 받아 문자열로 다시 전달합니다.

  • input() 먼저 raw_input() 를 수행 한 다음 수행합니다 eval().

가장 큰 차이점은 input()구문 적으로 올바른 파이썬 문장 을 기대 한다는 것 raw_input()입니다.

파이썬 3 :

  • raw_input() 로 이름이 변경되었습니다 input() 으므로 이제 input()정확한 문자열을 반환합니다.
  • 낡은 input() 것이 제거되었습니다.

old를 사용하려면 input()사용자 입력을 python 문으로 평가해야하므로을 사용하여 수동으로 입력해야합니다 eval(input()).


답변

Python 3에는 raw_input()Sven에서 이미 언급 한 것이 없습니다.

Python 2에서 input()함수는 입력을 평가합니다.

예:

name = input("what is your name ?")
what is your name ?harsha

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    name = input("what is your name ?")
  File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined

위의 예제에서 Python 2.x는 harsha를 문자열이 아닌 변수로 평가하려고합니다. 이를 피하기 위해 “harsha”와 같이 입력에 큰 따옴표를 사용할 수 있습니다.

>>> name = input("what is your name?")
what is your name?"harsha"
>>> print(name)
harsha

raw_input ()

raw_input () 함수는 평가하지 않으며 입력 한 내용 만 읽습니다.

예:

name = raw_input("what is your name ?")
what is your name ?harsha
>>> name
'harsha'

예:

 name = eval(raw_input("what is your name?"))
what is your name?harsha

Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    name = eval(raw_input("what is your name?"))
  File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined

위의 예에서 방금 eval함수를 사용하여 사용자 입력을 평가하려고했습니다 .


답변

python 2 사용자를 위해 모든 사람이 제공 한 설명에 조금 더 자세히 설명하고 싶습니다 . raw_input()지금까지 사용자가 입력 한 데이터를 문자열로 평가한다는 것을 알고 있습니다. 이것은 파이썬이 입력 된 데이터를 다시 이해하려고 시도하지 않음을 의미합니다. 고려할 것은 입력 된 데이터가 실제 문자열인지 또는 int인지에 관계없이 문자열이된다는 것입니다.

반면 input()에 사용자가 입력 한 데이터를 이해하려고합니다. 따라서 입력 helloworld은 오류를 ‘ helloworld is undefined‘ 로 표시합니다 .

결론적으로 파이썬 2의 경우 문자열도 입력하려면 ‘ helloworld‘ 처럼 입력해야합니다. ‘ ‘는 문자열을 사용하기 위해 파이썬에서 사용되는 일반적인 구조입니다.


답변

코드가 python2 및 python3으로 실행 중인지 확인하려면 스크립트에서 함수 입력 ()을 사용하고이를 스크립트 시작에 추가하십시오.

from sys import version_info
if version_info.major == 3:
    pass
elif version_info.major == 2:
    try:
        input = raw_input
    except NameError:
        pass
else:
    print ("Unknown python version - input function not safe")


답변