Language/Python

Input()과 Stdin.readline()의 차이

Reife 2023. 3. 6.

 

 

알고리즘 문제를 풀다보면 대다수의 문제가 데이터 입력을 요구합니다. 그래서 input 함수와 readline 함수는 알고리즘 문제를 파이썬으로 조금이라도 풀어본 사람이라면 익숙합니다. 저는 입력할 데이터가 많으면 readline 함수를, 함수 몇 개를 입력하는 거라면 글자수가 적은 input 함수를 써왔는데요. 그 차이가 왜 생기는지 알아보겠습니다.

 

Input

  • 실행시 파이썬 내부적으로는 readline이 호출됩니다.
  • 프롬프트 인자가 있으면, 개행 없이 표준 출력에 작성됩니다.
  • 입력 값에서 한 줄을 읽고, 문자열로 변환합니다. 이때 동반하는 개행은 제거합니다.
  • 내장함수여서 따로 임포트가 필요 없습니다.

 

 

Sys.stdin.readline

  • 입력값을 이진 데이터로 받고, 문자열로 변환하지 않습니다.
  • Input 함수와 다르게 이스케이프 문자를 읽어, '한 번에 몇 글자를 읽을지'와 같은 옵션을 매개변수를 통해 지정할 수 있습니다.
  • 프롬프트 메시지를 인자로 받지 않으며, 입력 받은 문자열에서 개행 문자를 제거하지 않습니다.

 

 

Input은 Readline 함수에서 편의를 위해 기능이 더해진 형태입니다. Readline 함수와 똑같이 동작하여 데이터를 입력받은 후, 이를 문자열로 변환하고, 개행을 제거하는 등의 추가 작업이 수행됩니다. 실행 시간이 얼마 걸리지 않는 작업이어서 데이터 규모가 작을 때는 두 함수의 성능에 차이가 없지만, 데이터 규모가 커지면 이 작은 차이가 모여 큰 성능 차로 이어지는 것입니다.

 

Reference

https://www.geeksforgeeks.org/difference-between-input-and-sys-stdin-readline/
https://stackoverflow.com/questions/22623528/sys-stdin-readline-and-input-which-one-is-faster-when-reading-lines-of-inpu

'Language > Python' 카테고리의 다른 글

[파이썬(Python)] 컴프리헨션(Comprehension)  (0) 2023.03.02

댓글