2013-09-26 2 views
5

확인에 명령, 그래서 내가 입력 명령을 많이 사용하고, 나는 Python2에서 내가 할 수있는 것으로 이해 :차이는 파이썬 2.x 및 3.x

text = raw_input ('Text here') 

를하지만 지금 내가 파이썬을 사용하는 것이

text = input('Text here') 

과 : 3 내가 차이점은 무엇 궁금

text = eval(input('Text here')) 

때이 둘 중 하나를 사용해야합니까?

+0

'eval'을 사용하는 데 익숙하지 않은 경우, 길게 짧으면 코드 인 것처럼 문자열을 평가합니다. – whatyouhide

+1

'eval()'을 사용하지 않는다면 괜찮을 것입니다. 'eval()'을 사용하면 unsanitized 사용자 입력에 절대 사용하지 마십시오. 사용자가'os.system ("rm -rf /")'을 입력하면 어떻게 될지 생각해보십시오. –

답변

7

파이썬 3.x에서 raw_inputinput이되었고 파이썬 2.x는 input이 제거되었습니다. 그래서, 3.X에서이 작업을 수행하여 :

text = input('Text here') 

당신은 기본적으로 2.X에서이 일을하고 있습니다 :

text = raw_input('Text here') 

가 3.X에서 이렇게 :

text = eval(input('Text here')) 

가있다 2.x에서와 동일 :

text = input('Text here') 

다음은 빠른 요약입니다. Python 문서에서 :

PEP 3111 : raw_input()의 이름이 input()으로 바뀌 었습니다. 즉, 새 input() 함수는 sys.stdin에서 한 행을 읽고 그 후행 개행을 제거한 행을 반환합니다. 입력이 조기 종료되면 EOFError이 발생합니다. input()의 이전 동작을 얻으려면 eval(input())을 사용하십시오.

+0

고마워,하지만 파이썬 2.x에서 raw_input과 input의 차이점은 무엇인지 모르겠다. 나 한테 말해 줄 수있어? – PazEr80

+0

'raw_input'은 단순히 사용자가 입력 한 것을 읽고 문자열로 반환합니다. 반면에'input'은 사용자가 실제 파이썬 코드로 입력 한 것을 평가합니다 (이것은 2.x에 있습니다). – iCodez

2

이들은 동일합니다

raw_input('Text here')  # Python 2 
input('Text here')   # Python 3 

그리고 이들은 동일합니다 파이썬 3에서 파이썬의 3 input()raw_input()라는 기능이없는

input('Text here')   # Python 2 
eval(raw_input('Text here')) # Python 2 
eval(input('Text here'))  # Python 3 

공지 사항 그건 그냥 raw_input()입니다 이름이 바뀌 었습니다. 그리고 파이썬 3에서는 파이썬 2의 input()에 직접적으로 해당하는 것은 없지만 다음과 같이 쉽게 시뮬레이트 할 수 있습니다 : eval(input('Text here')). input('Text here')eval(input('Text here')) 차이가 것처럼 후자 불안전 evaluates 입력 반면 (개행 제거 후행) 입력의 문자열 표시 입력 전 복귀 식 직접 입력이다 파이썬 3 자

, 인터랙티브 인터프리터에서.

관련 문제