SteadyDrills

input()과 sys.stdin.readline()의 차이 본문

PYTHON

input()과 sys.stdin.readline()의 차이

Drills 2024. 11. 27. 20:31

241127

 

Python에서 입력받는 함수 

 

input 

기본적으로 표준 입력으로부터 한 줄을 읽어 입력한다.

➡️한 줄의 기준은 엔터(개행)이다.

 

input의 특징

  • 자동 문자열 변환
    사용자가 입력한 내용을 자동으로 문자열로 변환하여 반환하기 때문에 추가적인 형 변환이 필요 없다.

  • 개행 문자 제거
    입력이 끝나면 자동으로 개행 문자가 제거되어 반환된다. 

  • 사용 편리성
    간단하고 직관적인 방법으로 별도의 모듈을 임포트 할 필요가 없다.

  • 효율성
    사용하기 간편하지만, 내부적으로 문자열을 처리하는 데 추가적인 오버헤드가 있다.
  • 입력 속도
    상대적으로 느린 편이다. 특히 많은 양의 입력을 처리할 때는 성능 저하가 발생할 수 있다.

 

"오버헤드(Overhead)" - 컴퓨터 과학 및 프로그래밍에서 특정 작업이나 프로세스를 수행하는 데 필요한 추가적인 자원이나 시간을 의미

 

예시코드

# input()을 사용하여 3개의 문자열 입력 받기
inputs = []
for _ in range(3):
    user_input = input("문자열을 입력하세요: ")
    inputs.append(user_input)

print("입력한 문자열들:")
print(*inputs, sep='\n')

 

sys.stdin.readline()

줄 끝에 있는 개행 문자(\n)도 포함해서 sys 모듈의 stdin에서 직접 한 줄을 읽어온다. 

 

sys.stdin.readline() 의 특징

  • 빠른 입력 처리
    대량의 데이터를 처리할 때 더 빠른 성능을 제공한다. 내부적으로 input() 보다 더 낮은 수준에서 입력을 처리하기 때문에 오버헤드가 적다.

  • 개행 문자 포함: 
    입력된 줄 끝에 개행 문자(\n)가 포함되어 반환되기 때문에 이를 제거하려면 strip() 메서드를 사용해야 한다.

  • 모듈 임포트 필요
    사용하기 위해 sys 모듈을 임포트해야 하므로, 조금 더 복잡한 설정이 필요하다.
  • 효율성
    입력을 처리하는 데 있어 더 적은 오버헤드를 가지므로, 대량의 데이터를 읽어오는 데 더 효율적이다.

  • 입력 속도
    일반적으로 input()보다 빠르고, 많은 양의 데이터를 처리할 때 유리하다.

 

예시코드

import sys

# sys.stdin.readline()을 사용하여 3개의 문자열 입력 받기
inputs = []
for _ in range(3):
    user_input = sys.stdin.readline().strip()  # 개행 문자 제거
    inputs.append(user_input)

print("입력한 문자열들:")
print(*inputs, sep='\n')