- 파이썬 print() 함수는 매우 간단하지만, 프로그래밍에서 중요한 역할을 수행하는 것으로, 디버깅 등 사용자에게 정보를 제공할 때 사용하는 유용한 기능이다.
- 기본적인 print() 문을 이해하고, 잘 활용할 수 있도록 몇몇 매개변수와 함께 공부하자.
지금까지는 파이썬에서 코딩하기 위해서 기본적으로 익혀두어야 하는 아주 기초적인 사항을 연습하고 익혔다면, 지금부터는 조금씩 본격적으로 파이썬에서 프로그래밍을 하기 위해서 각종 함수에 대한 문법에 대해서 익혀본다.
파이썬의 `print()` 함수는 콘솔에 코딩한 결과를 출력할 때 가장 많이 사용하는 함수로, 우리가 지금까지 공부하면서 지속적으로 사용했고, 앞으로도 많이 사용하게 되는 함수이다.
이 `print()` 함수는 다양한 형태로 결과를 출력할 수 있는 여러 가지 옵션을 통해 유연하게 출력을 제어할 수 있다.
이번 글에서는 `print()` 함수의 기본적인 사용법과 다양한 매개변수 및 고급 활용 방법까지 상세하게 알아보자.
`print()` 함수의 기본 구조
print() 함수는 인자로 전달된 값을 출력하는 간단한 출력문이며, 기본적으로 줄 바꿈 기능을 포함되어 있는 상태로 결과를 표시하게 된다.
기본 문법
print(출력할 값, sep=구분자, end=끝문자, file=출력대상, flush=버퍼링옵션)
우리가 익히 알고 있는 `print()`문 사용은, 단순히 `print(출력할 값)` 형태로만 사용했지만, 위와 같이 `print()`문에는 출력 값뿐만 아니라, `seq`, `end`, `file`, `flush` 등 다양한 매개변수(옵션)를 가지고 있으며, 목적에 따라 사용할 수 있다.
- `출력할 값`은 우리가 지금까지 사용했던, 코딩의 결과 값을 출력하거나 표현식을 전달할 때 사용하고 하며, 여러 개의 값을 출력하고 할 때는 `,`(쉼표)로 구분하여 출력할 수 있다.
- `seq`은 여러 값을 출력할 때 값들 사이에 삽입할 수 있는 구분자를 지정하며, 기본값은 공백(`" "`)으로 설정되어 있다.
- `end`는 출력 후, 마지막에 추가될 문자를 지정하는 것으로, 기본값은 줄 바꿈 문자(`'\n'`)가 적용되지만, 줄 바꿈 없이 출력해야 하는 경우 공백('` '`) 값을 지정하면 줄 바꿈 없이 옆으로 결과가 출력되며, 공백수량만큼 실제 출력에서도 공백을 가진다.
- `file`은 출력의 대상을 지정할 수 있는 옵션으로, 기본적으로는 `sys.stdout`(콘솔)으로 출력되지만, 파일이나 다른 출력 방식으로 변경할 수 있다.
- `flush`는 출력 버퍼를 즉시 비울지 여부를 결정하는 것으로, 기본값은 `false`로 설정되어 있어, 결과값을 버퍼링 없이 실시간으로 출력해야 하는 경우 `Ture`로 설정하면 된다.
기본 출력할 값으로 출력하기
print("안녕하세요, 돌출과 회전입니다.")
str_txt = "안녕하세요, 돌출과 회전입니다.")
print(str_txt)
안녕하세요, 돌출과 회전입니다.
안녕하세요, 돌출과 회전입니다.
지금까지 사용했던 `print()` 문이기 때문에 특별한 내용은 없으며, 출력할 값에는 문자열은 `" "`따옴표에 감싼 후, 출력하면 되고, 숫자 및 산술 연산자를 이용은 일반적으로 입력하여 직접 출력이 가능하고, 변수에 대입된 값은 해당 변수명을 입력하면 변수에 대입된 결과가 출력된다.
여러 값 출력하기
print("주소:", "esajin.kr", "이름:", "돌출과 회전", "나이:", 50)
str_1 = "esajin.kr"
str_2 = "돌출과 회전"
print(str_1, str_2)
주소: esajin.kr 이름: 돌출과 회전 나이: 50
esajin.kr 돌출과 회전
`print()` 함수는 여러 개의 값을 쉼표(`,`)로 구분하여 한번에 출력할 수 있고, 기본적으로 값과 값 사이에는 공백(`" "`)이 추가되어 출력된다.
만약, 공백 없이 값과 값을 붙여서 출력하고자 한다면, `+`연산자를 이용해서 사용할 수 있지만, 문자열과 숫자형은 같이 사용할 수 없다.
str_1 = "esajin.kr"
str_2 = "돌출과 회전"
print(str_1 + str_2)
print(str_1 + str_2 + 30)
esajin.kr돌출과 회전
TypeError: can only concatenate str (not "int") to str
`print()` 함수 `매개변수`(옵션) 활용 방법
`매개변수(Parameters)`란 함수나 메서드가 호출될 때 전달되는 값을 받는 변수를 의미하는 것으로, `print()` 매개변수를 무조건 사용하는 것이 아니라 옵션형식으로 필요할 때 사용하면 되는 것으로, 특히 `end`와 같은 매개변수를 자주 사용하게 된다.
`sep` 로 값 사이에 구분자 넣기
`sep` 매개변수는 `,`f로 여러 값을 출력할 때 값과 값 사이에 발생하는 사이 띄우기를 대신해서 사용자가 지정하는 내용으로 변경해서 넣을 수 있는 옵션이다.
str1 = "이제"
str2 = "입니다."
print(str1, "가을", str2, sep="@@;") # sep에 특수 기호 또는 문자 입력
print(str1, "가을", str2, sep=" ") # 사이띄우기 공간을 많이 줄수 있음
이제@@;가을@@;입니다.
이제 가을 입니다.
위 코드와 같이 `,`로 구분되어 결과 중간에 생기는 사이 띄우기 대신 지정한 문자나 더 많은 사이 띄우기를 넣을 수 있다.
`end`로 출력 후 끝문자 설정
`end` 매개변수는 `print()`문에 의해서 출력된 결과물 제일 마지막에 추가되는 부분을 설정하는 것으로, 기본값은 자동 줄 바꿈 문자(`\n`)로 설정되어 있어, 특별하게 지정하지 않아도 줄 바꿈이 가능하지만 `end`매개변수를 이용하면 줄 바꿈 대시 특정한 문자열이나, 공백을 추가하여 다음 print() 문에 의해서 출력되는 결과도 같은 줄로 줄 바꿈 없이 출력이 가능하도록 할 수 있다.
str1 = "이제"
str2 = "가을"
str3 = "입니다."
print(str1, end=" 정말 ") # end 종료자에 "특정 문자열 넣기"
print(str2, end=" ") # end 종료자에 " "줄바꿈 없이 사이띄우기로 같은 줄로 출력
print(str3)
이제 정말 가을입니다.
기본적으로 `print()`문은 자동 줄 바꿈이 있지만, `end`를 사용하면 다음 `print()`문의 결과도 같은 줄에 출력되는 것을 볼 수 있으며, 새로운 문자열을 추가할 수 있고, 공백(`""`, `" "`)을 추가하여 자연스럽게 다음 결과와 이어지게 출력할 수 도 있다.
`file`로 출력 값을 파일로 저장하기
`print()`문은 기본적으로 콘솔에 출력(파이참 실행 결과창 등)하지만, `file` 매개변수를 사용하면 출력 위치가 `콘솔`이 아니 지정한 파일로 `print()`함수의 결과를 저장할 수 있다.
with open("output.txt", "w") as f:
print("오, 신기 하다.", file=f)
위 코드는 아주 나중에 배우게 되는 프로그램 동작할 때 발생하는 각종 결과물을 저장할 때 사용하는 코드인데, `print()`문에 'file'매개변수를 통해서 설정한 `"output.txt"`파일로 출력 결과를 저장할 수 도 있다.
특별하게 많이 사용하지는 않는 것 같은데, 대충 이런 게 있다. 정도만 알아두면 될 것 같다.
`flush`로 버퍼링 없이 바로 출력하기
기본적으로 파이썬 `print()`문은 출력을 버퍼링 해서 한꺼번에 출력하는 방식인데, 이 버퍼링이라는 것은 쉽게 메모리에 데이터를 모았다가 출력하는 방식이며, 기본값(매개변수 지정이 없으면)은 `flush=False`로 설정되어 있다.
`flush=True`로 매개변수를 설정하면, 버퍼링 없이 즉시에 결과를 출력하는 것으로, 주로 실시간으로 반응해야 하는 결과를 표시할 때 유용하게 사용할 수 있다.
import time
print("실시간 처리 중...", end="", flush=True)
time.sleep(2)
print(" 완료!")
실시간 처리 중... 완료!
위 코딩 내용은 "실시간 처리 중.."을 출력한 후, 2초 동안 지연된 후 "완료!"를 출력하는 내용인데, `flush=true`로 설정했기 때문에 바로 화면에 출력된다고 하지만, 실제 해보면 나타나지 않고, 2초 후에 결과가 출력되는 것을 볼 수 있는데, 이것은 시스템에 따라 달라질 수 있기 때문에, 눈에 띄는 차이가 없을 수 있다.
`flush=True`는 파일 출력, 네트워크, 실시간 로그처럼 출력이 바로 필요하거나 출력 장치에서 버퍼링이 중요한 경우에 매우 유용하다고 하니, 이런 형식이 있다는 정도로 알아두고 넘어가면 될 것 같다. 지금 당장은 사용하는 경우가 없을 것 같다.ㅎㅎ
이것으로, 앞으로 파이썬을 통해서 기초 코딩을 배우는 동안 정말 많이 사용하게 되는 `print()`함수의 문법에 대해서 알아보았다.
지속적으로 사용되는 내용도 있고, 어쩌다가 한 번씩 사용하는 내용도 있고, 특별한 사항이 아니면 거의 사용하지 않는 내용도 있지만, 무조건 모든 문법과 매개변수들을 전부 외우는 짓은 하지 말자.
대충 어떻게 동작한다는 것만이라도 잘 익혀두면, 나중에 여러 경로를 통한 검색등을 통해서 충분히 보충할 수 있을 것이다.^^
우리 같이 열심히 공부해 봅시다.
죽이 되는 것보다 밥이 되는 것을 목표로~~^^
위 내용은 공부하면서 이해한 내용과 단편적인 검색 지식으로 작성된 내용으로 글에 오류가 있을 수 있으며,
오류나 잘못된 정보가 있으면 언제든지 댓글 주시면 최대한 반영/수정하겠습니다.