본문 바로가기

computer/python

print 함수

print 함수는 보통 파이썬을 시작하면 가장 먼저 접하는 기능이다.

(함수가 무엇인지는 차후에 설명하기로 하자)

 

이 기능은 컴퓨터 사용자가 직관적으로 이해하기 쉽다.

원하는 내용을 괄호 안에 입력하면 그대로 화면에 나타나기 때문이다.

 

그림1. print 함수

 

파이참의 도움을 받아 print 함수에 대해 알아보자.

 

맥북을 기준으로 print 함수를 command + 클릭 하면 builtins.py 파일에서 함수에 대한 설명을 볼 수 있다.

두 번째 레퍼런스의 설명에 의하면 파이썬 내장함수인 builtins.py이 함수는 c 언어로 구현되기 때문에

파이썬 파일 내부에 code가 존재하지 않는다. 하지만 이 함수를 사용하기 위한 요건을 알 수 있다.

 

그림2. builtins.py의 print 함수

print 함수는 다섯 개의 인자를 받는다. (*인자는 함수의 괄호 안에 들어가는 요소를 뜻 한다.) 

파이썬의 특징인 self과 *args, 괄호안에 값이 선언 된 sep, end, file이다.

괄호 안에서 값이 미리 선언된 것은 특별히 다시 설정하지 않는 이상 기본적으로 설정된 값이다.

 

sep은 print의 입력으로 여러 개의 값이 들어가면 이 값들을 구분하는 구분하는 변수이다.

print의 기본(default) sep 값은 공백(' ') 문자이다.

end는 print 입력의 마지막 값 뒤에 붙는 값이고 기본은 개행문자(\n)이다. 

 

file은 함수의 기본 인자 값에는 None이 입력되어 있지만,

주석의 설명에는 defaults to the current sys.stdout으로 되어있다. (확인 필요)

기본적으로 sys 모듈의 stdout이 값인 것인데 이는 표준 출력을 의미한다.

세 번째 레퍼런스에 설명된 표준 출력은 운영체제가 제공하는 기본적인 출력으로 현재 사용하는 콘솔이라고 한다.

간단히 말해 검은 화면에 나온다는 것이다.

 

*args는 *이 붙어 생경하다.

파이썬에서 *이 붙은 인자는 개수가 정해지지 않은 값을 의미한다.

여러 개의 값이 사용될 수 있다는 뜻으로 보편적으로 *의 변수명은 args를 사용한다.

 

파이썬 공식문서 입력과 출력 부분을 보면 print 함수를 사용하는 방법을 더 알 수 있다.

 

7.1.1 Formatted String Literals에 보면 파이썬 문자열에 f의 접두어를 붙이고 표현식을 통해 표시 값이 범위를 제한한다.

소수점이 매우 길게 이어지는 경우라면 두 세자리 정도까지만 값을 확인하는 것이 가독성에 좋을 것이다. 

 

그림3. formatted string literals

7.1.2에서는 String의 format 메소드(함수)를 이용해 문자열의 특정 영역을 변수처럼 활용한다.

문자열을 인자로 넣고 문자열이 가진 format 메소드를 이용하는 것이다.

이 방식을 더 깊게 이해하려면 객체 지향으로써의 파이썬을 알아야 한다.

우선은 이용하기만 해도 좋다.

 

그림4. format 함수

print 함수는 파이썬 프로그래밍에서 간단하게 값을 확인하는 디버깅 용도나 콘솔 메세지로 이용하는 친숙한 함수이다.

 

우리는 이 글을 통해 print 함수의 인자들과 입출력의 개념, print 함수의 간단한 사용 예를 알아보았다.

 

 

appendix1. 입력-출력 매커니즘

print 함수를 통해 입력과 출력이라는 개념에 대해서 알 수 있다.

입출력은 컴퓨터를 동작하는 매커니즘 중 매우 큰 비중을 차지한다.

 

그림1 에서는 'friday is awesome.' 키보드로 입력한 문자들의 나열인 문자열을 입력 받았다.

그 결과로 friday is awesome.을 콘솔(console)이라고 하는 검은 화면에 출력하였다.

 

그림2의 파이썬 프로그램을 통한 입력, 출력을 확장해보자.

키보드 - 콘솔에 파일 - 파일, 키보드 - 파일, 네트워크 - 파일, 네트워크 - 네트워크 등과 같이

컴퓨터 환경을 이루는 많은 것들이 입력과 출력으로 설명할 수 있다.

 

그림2. 입출력 모형

프로그램이 입력이 어디에서 오고 어디로 나가느냐가 프로그램을 이해하는데 도움이 되는 것이다.

 

 

 

Reference

https://docs.python.org/ko/3/tutorial/inputoutput.html

https://stackoverflow.com/questions/32002087/why-dont-pythons-built-in-functions-have-code-objects

https://www.lesstif.com/lpt/stdin-stdout-stderr-113346293.html