파이썬에서 입력을 받기 위한 방법은 여러가지가 있지만, 그 중 input()과 sys.stdin.readline()에 대해 알아보고자 합니다.
1. input()
파이썬에서 가장 일반적인 사용자 입력 방식으로, 입력을 받을 때마다 문자열 형태로 반환합니다. 주로 간단한 사용자 입력을 받을 때 사용됩니다.
name = input("Enter your name: ")
print(f"Hello, {name}!")
작동 방식 : input()은 표준 입력을 통해 한 줄의 입력을 받아 문자열로 반환합니다. 이때 사용자가 엔터 키를 누를 때까지 입력을 기다리며, 입력이 완료되면 줄 바꿈 문자는 자동으로 제거된 상태로 반환됩니다. 만약 예외적인 상황이 발생할 경우(Ctrl+D 또는 Ctrl+C), EOFError나 KeyboardInterrupt 예외가 발생하여 입력 처리가 중단될 수 있습니다.
장점: 코드가 간단하고 직관적이며, 단일 입력에 적합합니다.
단점: 속도가 느려서 대량 입력을 받는 반복문에서는 비효율적입니다.
속도가 느린이유는?
입력 처리 버퍼 관리와 예외 처리 및 자동 문자열 변환이 결합되어 input()은 속도가 다소 느려지는 반면, sys.stdin.readline()은 단순히 입력만 빠르게 처리하는 저수준 방식이므로 더 빠릅니다. 따라서, 반복적으로 입력을 받을 때 이런 차이가 누적되어 sys.stdin.readline()이 더 효율적입니다.
2. sys.stdin.readline()
파이썬의 sys 모듈에 포함된 함수로, 표준 입력 스트림에서 한 줄씩 데이터를 읽어오는 저수준 입력 방식입니다. 대량의 입력을 빠르게 처리해야 할 때 유용하며, 특히 반복문과 함께 사용하면 효율적으로 입력을 받을 수 있습니다.
import sys
data = sys.stdin.readline()
print(data)
| 항목 | input() | sys.stdin.readline() |
|---|---|---|
| 사용 목적 | 표준 입력에서 한 줄을 입력받음 | 표준 입력에서 한 줄을 입력받음 |
| 반환값 | 문자열(입력 끝에 개행문자 제거됨) | 문자열(입력 끝에 개행문자 포함됨) |
| 속도 | 느림(입력마다 내부 처리가 더 많음) | 빠름(파일처럼 동작하여 속도 우위) |
| 개행문자 처리 | 자동으로 개행문자를 제거 | 개행문자를 포함하여 반환 |
| 용도 | 일반적인 입력 처리에 적합 | 대량 입력 처리나 속도가 중요한 경우 적합 |
| 사용 가능 여부 | 기본적으로 사용 가능 | import sys를 통해 sys 모듈을 가져와야 함 |