728x90
이번 포스트에는 사용자 입력을 처리하기 위한 내장 함수에 대해서 비교하여 정리하겠습니다.
1. Python 2.x
1) raw_input()
입력 값을 무조건 문자열로 받음
2) input()
입력으로 들어온 값을 evaluate 해서 그 값에 맞는 자료형으로 초기화(형변환이 자동으로 된다.)
2. Python 3.x
1) input()
- Python 3.x에서 input()는 Python 2.x 의 raw_input() 역할을 대신하여 입력 값을 문자열로 받음
-> 다른 타입을 넘겨주기 위해선 형변환이 필요 - Python 3.x로 넘어오면서 모든 변수가 객체(object)로 처리됨에 따라서 결과 값도 type에서 class로 바뀌게 됨
- input() 내장 함수는 parameter로 prompt message를 받을 수 있음
-> 입력받기 전 prompt message를 출력 (느린속도, 부하의 원인)
# 입력하세요: 라는 prompt 메세지를 받는 input()
a =input("입력하세요: ")
print(a)
- input() 내장 함수는 입력받은 값의 개행 문자를 삭제시켜서 리턴
-> 입력받은 문자열에 rstrip() 함수를 적용시켜서 리턴, 정확히는 개행문자만 없애서 줄바꿈없이 출력 (느린속도, 부하의 원인) - input()은 더 이상 입력이 없는데도 수행될 경우 EOFerror에러 출력
- 내장 함수
2) sys.stdin.readline()
- sys.stdin.readline()는 입력값을 문자열로 받음
-> 다른 타입을 넘겨주기 위해선 형변환이 필요 - sys.stdin.readline()은 prompt message를 인수로 받지 않음
# 잘못된 예
b = sys.stdin.readline("입력하세요: ") # 에러 출력
# 올바른 예
b = sys.stdin.readline
print("입력하세요:",b())
- 한줄 단위로 입력받기 때문에, 개행 문자를 포함한 값을 리턴
-> 줄바꿈(new line)이 적용되고 다음줄부터 출력
-> rstrip()을 붙여줘야 개행을 제거한 채로 출력
# rstrip()하여 출력
b = sys.stdin.readline
print("입력하세요:",b().rstrip())
print("new line test")
# rstrip()없이 입력
b = sys.stdin.readline
print("입력하세요:",b())
print("new line test")
- sys.stdin.readline()은 빈 문자열을 반환
- sys 에 속하는 메소드들은 file object로 취급, 사용자의 입력만을 받는 buffer를 하나 만들어 그 buffer에서 읽어들이는 것
3) input() vs sys.stdin.readline 비교표
version : python 3.x | input() | sys.stdin.readline |
받는 형태 | 문자열(다른 타입을 넘겨주기 위해선 형변환 필요) | |
반환 형태 | 모든 변수가 객체(object)로 처리됨에 따라 class 반환 | |
promt message 사용여부 | 사용 가능(속도 저하) | 사용 불가능 |
개행 포함여부 | 개행 불포함(개행 제거후 출력 → 속도저하) | 개행 포함(개행 적용 후 출력 → 개행 제거를 위해서는 rstrip()이 필요) |
빈문자 입력 | EOFerror에러 출력 | 빈 문자열 반환 |
함수 형태 | 내장 함수 | sys에 속하는 메소드로 file object 취급, 사용자의 입력만을 받는 buffer를 만들어서 읽어들임 |
참조:
https://buyandpray.tistory.com/7
https://velog.io/@gouz7514/%ED%8C%8C%EC%9D%B4%EC%8D%AC-input-vs-sys.stdin.readline
728x90
'language > Python' 카테고리의 다른 글
[Python] PyPy3 vs Python3 (0) | 2023.01.06 |
---|---|
[Python] 함수의 강점, 함수 return 이란?, 언제 사용할까? print()와의 차이점 (0) | 2022.12.15 |
[Python] pandas vs pyspark 사용 및 코드 비교 (0) | 2022.09.22 |
[Python] Numpy library 개념, 기본 사용법 (0) | 2022.07.12 |
[Python] Requests, URLlib, BeautifulSoup4(bs4) 확실히 알고 쓰기 (0) | 2022.06.30 |
댓글