Python

[Python] input VS sys.stdin.readLine

비번변경 2022. 1. 23. 21:12

input과 sys.stdin.readLine 간 속도 차이가 나는 이유에 대해 간단히 적어둔다.

 

 

Python 2.X

Python 2에서 사용자 입력을 처리하기 위한 함수는 input과 raw_input이 존재하며, 그 기능은 아래와 같다.

  • input : 입력 받은 값을 evaluate하여 적절한 자료형으로 초기화하여 반환한다.
  • raw_input : 입력 받은 값을 문자열로 반환한다.

따라서 입력 받은 값을 별도 처리하여 저장하는 input 함수가 상대적으로 느리다.

 

그렇다면 Python 3에서도 동일할까? 그건 아니다. 

 

Python 3.X

Python 2에서 사용자 입력을 처리하기 위한 함수 중 raw_input은 삭제되었고, input이 raw_input을 대체하게 되었다.

즉, Python 3의 input과 sys.stdin.readLine 모두 입력 받은 값을 문자열로 저장한다. 하지만 input이 sys.stdin.readLine 보다 상대적으로 느린데, 그 이유는 아래와 같다.

 

이유

  1. input은 호출 시 전달받은 prompt message을 출력한 뒤, 사용자의 입력을 기다란다. 반면 sys.stdin.readLine는 prompt message를 매개변수로 받지 않느다.
  2. input 함수는 입력 받은 값에서 개행 문자를 제거한 결과를 반환한다. 반면 sys.stdin.readLine는 개행 문자를 포함한 입력 받은 값은 반환한다.