본문 바로가기
언어/Python

[Python 기본 공부정리] 7-1. 표준 입출력 함수

by 민-Zero 2019. 12. 26.

공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다. 

틀린 부분에 대한 지적은 감사합니다.

1. input()

프로그램 내부에서가 아닌 프로그램 외부의 사용자가 변수에 값을 대입하는 방법으로 표준 입력을 하는 함수인 input()을 지원한다.

문법)

변수명 = input(출력 문구)

출력 문구는 주로 "OOO을 입력하세요: " 와 같이 설명이나 질문 등을 작성하기 위해 사용하며 input을 사용하게 되면 출력 문구 옆에 입력을 기다리는 커서가 깜빡이게 된다.

변수에 input함수를 통해 값을 입력 하게되면 정상적으로 사용 가능 하지만 input함수는 입력되는 모든 값들을 문자열 형태로 저장하게 된다. 따라서 원하는 데이터형으로 값을 변환하기위해 강제로 형변환을 할 수 있게 해주는 int() 나 float(), double() 등을 사용해 입력받은 변수의 데이터를 변경해 주어야 한다. 

물론 eval() 함수를 사용하는 것이 좋을 수 있다. eval()함수는 입력된 인수를 유효한 표현식으로 바꿔서 리턴해주는 함수이다. 그렇기 때문에 자동적으로 입력한 형태에 맞춰 데이터형이 변하는 효과를 지닌다.

실수형 뿐만아니라 리스트냐 튜플 딕셔너리 같은 iterable객체 또한 완벽하게 변경해 입력해 준다. 굉장히 유용하고 폭넓게 사용 가능해 보이지만 위험한 결과를 초래할수 있는 함수 이다. 입력받은 데이터를 자동적으로 유효현 표현식으로 변경해 주기 때문에 외부 사용자가 정상적인 데이터가 아닌 시스템 명령어를 입력한다면 유효한 표현식으로 바뀌어 시스템 명령어를 동작하게 된다.

예를 들어 프로그램 제작자는 이름을 입력받아 출력하는 프로그램을 만들고 싶었지만 그 프로그램을 통해 해당 프로그램이 동작하는 서버의 시스템 명령어를 사용할 수 있게 도와주는 프로그램으로 변질되어 사용할 수 있는 경우가 생긴다. 따라서 eval() 함수를 사용하는 것은 command injection에 대해 굉장히 취약해질 수 있으므로 사용을 자제해야 한다.

 

2. print()

print 함수는 입력한 데이터를 출력하는 용도로 사용하였다. print함수의 다른 기능에 대해 간단히 정리하자.

문자열을 연속으로 입력할 경우 자동으로 + 연산을 진행한 결과로 출력해 준다.

쉼표를 입력할 경우 띄어쓰기를 진행한 결과로 출력해준다.

print함수는 기본적으로 출력이 끝나면 개행을 기본값으로 가지고 있다. 따라서 end 매개 변숫값을 변경해 출력하면 개행이 아닌 다른 문자로 마지막을 출력 가능하다.

sep 매개변수를 변경할 경우 , 를 통해 띄어쓰기를 진행한 것을 다른 문자로 변경 가능하다.

file 매개변수를 통해 뒤에 정리할 파일 입출력에 관해서 출력값을 파일에 저장할 수 있다.

댓글