╱╱╭╮╱╱╱╱╱╱╭━━━╮╱╱╱╭╮╱╭╮╱╱╱╱╱╱ ╱╱┃┃╱╱╱╱╱╱┃╭━╮┃╱╱╱┃┃╱┃┃╱╱╱╱╱╱ ╱╱┃┣━━┳━━╮┃┃╱┃┣━╮╱┃╰━╯┣━━┳━╮╱ ╭╮┃┃╭╮┃┃━┫┃╰━╯┃╭╮╮┃╭━╮┃╭╮┃╭╮╮ ┃╰╯┃╭╮┃┃━┫┃╭━╮┃┃┃┃┃┃╱┃┃╭╮┃┃┃┃ ╰━━┻╯╰┻━━╯╰╯╱╰┻╯╰╯╰╯╱╰┻╯╰┻╯╰╯

Python/Python 기초

[Python] 입출력 함수(print 함수)

재안안 2022. 2. 24. 17:59

이번 시간엔 파이썬에서 가장 기본적인 함수라고 생각해도 무방할 입출력 함수에 대해 알아보겠다.

print()는 출력함수이고 단어() 형식을 통해 함수임을 알 수 있다.

 

우선 함수의 개념부터 알아보자. 

함수는 어떠한 값을 받아서 일을 수행하고 수행한 결과를 반환한다.

쉽게 말하자면 함수에게 원두를 줄테니 커피를 만들어줘 하면

원두(값)을 받아서 요리,포장(일)를 하고 커피(결과)를 돌려준다. 해줘 하면 해준다.

일단 함수는 일을 대신 해준다는 개념으로 생각해도 좋다.

 

우선 그동안 예제로도 많이 사용했던 print()에 대해 알아보겠다. print()가 해주는 일은 주어진 값을 콘솔창에 출력하는 것이다. 콘솔창은 코드들의 실행 결과를 확인하는 창이다.

사용형식으로 print(값)이고 특이한 경우에는 조금 다르다. 우리는 출력함수를 사용해 어떠한 값을 우리 눈으로 볼 수 있다. 아래의 예제를 통해 확인해 보겠다.

 

print() 예제문

 

print()는 사실 입력받은 값을 출력만 하는게 아니라 값 출력후 자동으로 줄바꿈을 해준다.

무슨말이냐면 print(값)은 2가지 일을 한다는 말이다. 출력도 하고 줄도 바꿔주고.

대체로 코드 한줄은 하나의 일밖에 하지 못하는데 하는 일이 2가지인 경우다.

그 이유에 대해 아래에서 더 자세히 살펴 보겠다.

 

print() 극한으로 사용하기

위의 사진은 print()함수의 원형을 보여준다. 함수의 원형을 보면 우리가 대체로 알고있는 사용 방법 외에도 숨겨진 기능들이 보이니 한번쯤 보는것이 좋다. 우리는 그동안 print()에 값을 출력하는 형태로만 사용했었는데 원형을 보니 print()는 값 말고도 입력받을 수 있는 데이터가 많다. 간단히 정리하자면

 

values에는 출력하고 싶은 생략시 value = 공백

sep: 에는 출력값 중간에 삽입 하고 싶은 문자 생략시 sep = 공백

end: 에는 출력 마지막으로 넣고싶은 문자 생략시 end = \n

file: 에는 출력할 공간 생략시 file = sys.stdout 

flush: 에는 True or False를 입력한다 생략시 flush = False

 

sep은 seperate의 약자이며 자료들의 사이를 어떤 문자로 나눌 것인지를 입력하면 된다.

file은 print()를 실행할 장소를 물어보는건데 생략시 sys.stdout이 입력되어 콘솔창에 출력한다.

아래에서 예제를 통해 확인하겠다.

 

sep, file 사용 예제
왼쪽은 콘솔창 출력 결과. 오른쪽은 9, 10번 줄의 실행 결과이다. example.txt생성 및 coffee!출력

 

 

Flush는 하드웨어와 관련된 부분이라 본인의 지식부족으로 인해 다음에 알아보겠다.                                              

flush=True를 해도, flush=Flase를 해도 콘솔창에 출력된다. 추측을 하나 해보자면 flush는 하드웨어와 관련된 부분이라 True or False에 관계없이 콘솔창에는 출력이 되는것 같다. 그런데 만약 어떠한 프로그램을 만들었다고 가정하자. 다른 컴퓨터에서 그 프로그램을 실행했을 때 실행 코드중 print('~', flush=True)로 되있으면 컴퓨터의 모니터에서 다른 화면으로 ~가 출력이 되고 False이면 모니터에는 출력은 안되는 그런거 같다. flush=False가 기본 값인걸 보고 생각한 것이다.

 

 

다음으로 print()에서 값을 입력하는 부분을 알아보겠다. 일일이 값을 입력해 전달하는 방법 말고도 여러가지 데이터들을 한번에 전달하는 방법이 있다. 이는 문자열을 값으로 전달할 때 formating을 사용하면 한번에 전달할 수 있어 편리하다. formating의 방법으로는 아래와 같이 있다.

 

format()

%서식기호

f-string

 

우선 format() 메소드 부터 알아보겠다. format() 메소드는 실제로 본인이 예제를 만들 때 많이 썼던 방법이다.

사용형식은 문자열사이에{중괄호}.format(값)이다. 아래의 예제를 통해 알아보겠다.

 

format() 메소드 사용예제

여기서 c는 1번줄에 선언했던 c = 'coffee'이다.

문자열안의 {중괄호1}, {중괄호2}, . . . 는 format(값1, 값2, . . .)이런 식으로 매칭된다.

이런식으로 데이터가 들어가길 원하는곳에 {중괄호}를 넣어주면 되겠다.

 

 

다음은 %서식기호를 활용하는 방법에 대해 알아보겠다.

서식기호도 문자열 사이에 넣어 데이터를 어디에 넣을지 표시한다. 그리고 서식기호를 사용하려면 기호를 알아야한다.

아래의 기호들이 가장 많이 쓰이는 서식기호이다. 

 

%d는 정수(decimal)

%s는 문자열(string)

%f는 실수(float)

 

%서식기호 사용예제

 

 

그리고 f-stirng에 대해서도 알아보겠다.

f-string의 사용방법으로 그냥 문자열 앞에 f를 붙여주고 {중괄호}안에 원하는 데이터를 직접 넣어주면 된다.

진짜 이게 다이다.

사실 본인은 f-string을 처음 봤을 때 괜히 f가 어색하고 어려워 보여서 format 메소드를 공부했다.

그런데 이제부터는 f-string을 사용할 것이다. 엄청 간편하다.

 

f-stirng 사용예제

 

 

그리고 여담으로 format() 메소드의 재미있는 기능도 있는데 아래를 통해 보여주겠다. 

 

재미있는 예제

16번 줄을 통해 사용방법을 알려주겠다. {공백}을 {0:*>10}로 바꾼 것이다.

 

0은 format()에서 받은 0번째 값

*은 공백을 채울 문자

>은 문자 정렬방향

10은 출력 문자열 크기