파이썬 3 raw_input()
과 차이점은 무엇입니까 input()
?
input
로 raw_input
이름 오류를 무시합니다.
파이썬 3 raw_input()
과 차이점은 무엇입니까 input()
?
input
로 raw_input
이름 오류를 무시합니다.
답변:
차이점은 raw_input()
파이썬 3.x에는 존재 input()
하지 않는다는 것입니다. 사실, 이전은 raw_input()
이름이 변경되었습니다 input()
, 그리고 이전은 input()
사라지고 있지만, 쉽게 사용하여 시뮬레이션 할 수 있습니다 eval(input())
. ( eval()
이것은 악한 것을 기억하십시오 . 가능하다면 입력을보다 안전하게 분석하는 방법을 사용하십시오.)
raw_input
... 의 차이점은 무엇입니까 ?" - "의 차이점은 없습니다 raw_input
." ... 아주 큰 차이가 있습니다.
eval
(그리고 exec
그들은 보안 위험이 될 수 있기 때문에) 일반적으로 피해야한다. 자세한 내용 은 SO 베테랑 Ned Batchelder에 의해 Eval은 실제로 위험합니다 를 참조하십시오 . 물론 그 조언은 이전 Python 2에도 적용됩니다 input
.
eval()
및에 대한 올바른 사용 사례가 exec()
있지만 먼저 사용 eval()
을 결정하기 전에 사용하지 않아야하는 이유를 이해해야 합니다.
Python 2 에서 raw_input()
문자열을 반환 input()
하고 입력을 Python 표현식으로 실행하려고합니다.
문자열을 얻는 것이 거의 항상 원하는 것이기 때문에 Python 3은 input()
. 스벤이 말했듯이 오래된 행동을 원한다면 eval(input())
효과가 있습니다.
raw_input()
.
raw_input()
사용자가 입력 한 내용을 그대로 받아 문자열로 다시 전달합니다.
input()
먼저 raw_input()
를 수행 한 다음 수행합니다 eval()
.
가장 큰 차이점은 input()
구문 적으로 올바른 파이썬 문장 을 기대 한다는 것 raw_input()
입니다.
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
' 처럼 입력해야합니다. ' '는 문자열을 사용하기 위해 파이썬에서 사용되는 일반적인 구조입니다.