이 이상 파이썬 2의 입력을 사용하는 지금까지 유용한가요 raw_input?
번호
input()
사용자가 제공하는 코드를 평가한다. Python의 모든 기능을 사용자에게 제공합니다. 생성자 표현식 /리스트 포함, __import__
및 if/else
연산자를 사용하면 말 그대로 파이썬에서 수행 할 수있는 모든 작업을 단일 표현식으로 수행 할 수 있습니다. 악의적 인 사용자는 input()
을 사용하여 파일 (__import__('os').remove('precious_file')
)을 제거하고 프로그램의 나머지 부분을 monkeypatch (setattr(__import__('__main__'), 'function', lambda:42)
) ... 할 수 있습니다.
일반 사용자는 모든 고급 기능을 사용할 필요가 없습니다. 표현이 필요하지 않은 경우 ast.literal_eval(raw_input())
을 사용하십시오. literal_eval
함수는 안전합니다.
고급 사용자 용으로 작성하는 경우 코드를 입력하는 더 좋은 방법을 제공하십시오. 플러그인, 사용자 모듈 등 - 기능 만이 아닌 완전한 파이썬 구문을 사용한 것.
자신이하는 일을 확실히 알고 있다면 eval(raw_input())
라고 말하십시오. eval
은 "나는 위험합니다!"라고 외칩니다. 훈련 된 눈에. 그러나 확률은 당신이 이것을 필요로하지 않을 것입니다.
input()
파이썬 3가 해결되어 기존의 디자인 실수 중 하나였다.
코드 골프에 유용합니다 –
"이유"에 대답하려면 - 파이썬의 첫 번째 REPL은 'while 1 : print input()'되었을 수도 있습니다. 나는 그 고대 시대에 훌륭한 프로그래밍 방법을 지원하는 것이 파이썬의 우선 순위 목록에서 그랬던 것처럼 그렇게 높지는 않았다. 파이썬 3의'while True : print (eval (input)))'은 혼란스럽게 보일지도 모릅니다. –