먼저 오늘도 고생 많으셨습니다.
오늘 들으신 내용은 거의 모든 언어에서 처음 배우기 마련인 출력에 대한 함수입니다.
파이썬에서는 대표적으로 print
를 배우게 되는데요. 이 print
라는 함수에 대해 보다 심화된 내용을 소개드리려고 합니다.
먼저 시작에 앞서 다음과 같이 입력해보겠습니다.
help(print)
help
는 print
와 비슷한 함수로서 입력된 함수나 기능에 대한 사용설명서를 출력합니다.
꼭 파이썬이 아니더라도 제가 강력히 추천드리는 공부 방법은 어떤 언어라도 깊게 이해하고 싶으면
처음 접하게 되는 기능에 대한 설명문서를 읽어보는 것인데요.
설명문서를 읽음으로써 함수의 입출력, 정확히 하는 작업, 추가적인 옵션 등을 파악할 수 있습니다.
앞으로 수많은 내용을 배우실 텐데요. 관련 설명문서를 안 읽는 것보다 조금이라도 읽어보는 것이 무조건 옳다고 단언해드릴 수 있습니다.
위의 코드의 실행결과를 조금만 적어보겠습니다.
Help on built-in function print in module builtins:
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
# ... 생략
화면에 print
함수에 대한 설명이 나옵니다. 조금 읽어보시면 함수가 하는 일, 받는 인자 등에 대한 소개가 있습니다. 오늘 영상에서 배우신 sep
, end
도 있습니다. 아 참고로 인자(argument)란, ()
안에 넣는 모든 값을 의미한다고 보시면 됩니다.
설명문서에서 end
인자 뒤에 배우지 않은 file
, flush
가 있습니다. 실제로 print
함수는 이 인자들도 받을 수 있는데요.
강사님이 이 부분을 설명하지 않은 이유는 이 두 인자가 운영체제와 직간접적으로 관련이 있어 영상의 수준을 벗어나기 때문인 것 같습니다.
print
의 심화내용으로서 file
, flush
인자에 대해 매우 간략히 설명드리겠습니다.
프로그래밍에는 표준 입출력
이라는 개념이 있습니다. 짧게 말씀드리면 프로그램에서 특별한 설정없이 입력과 출력을 받을 때 사용하는 경로라고 할 수 있습니다.
print
함수는 출력 방향을 화면으로 향하는 것이 기본값(표준 출력)으로 되어 있어서 기본적으로는 화면에 내용이 출력됩니다.
하지만 file
인자에 다른 내용을 준다면 파일 등에 내용을 쓰는 것도 가능해집니다. stdout
은 이때 standard output
(표준 출력)의 줄임말이구요.
혹시 표준 입출력에 대한 내용을 좀더 살펴보고 싶은 분들은 제 블로그를 읽어보셔도 괜찮습니다.
https://shoark7.github.io/programming/knowledge/what-is-standard-stream
flush
는 정말 하드웨어와 관련이 있는 개념입니다. 정확히는 I/O 버퍼와 관련이 있는데요.
우리가 키보드에서 글자를 입력하면 화면에 바로 내용이 출력됩니다.
하지만 키보드와 화면 사이에는 '버퍼(buffer)' 개념 또는 장치가 있어서 버퍼에서 내용을 출력 전에 잠시 보관하게 됩니다.
flush
는 키보드에서 입력되어 버퍼에 저장된 내용을 출력방향(여기서는 화면)으로 바로 밀어넣는다는 의미인데 이 밀어넣는 것은 성능면에서 비용이 크다고 합니다. 그 말은 밀어넣는 작업을 적게 할수록 비용효율적이라는 뜻과 같아집니다.
그래서 이 인자를 곧 배우실 False
로 해놓으면 경우에 따라서는 비용절감을 위해 입력된 내용이 바로 화면에 출력되지 않을 수도 있습니다.
이 부분은 정말 하드웨어와 관련이 있어서 일단 읽고 넘어가셔도 충분할 것 같습니다.
위 두 인자는 좀 마니악해서 저도 거의 안 써본 것 같습니다. 그렇기에 혹시 당장 이해가 안 가시더라도 그냥 넘어가셔도 아무런 지장이 없습니다. 필요하시면 두 내용은 따로 질문주시면 더 자세하게 말씀드릴 수 있도록 하겠습니다.
설명이 길어졌는데요. 제가 강조드리고 싶은 것은 print의 모든 인자를 파악하는 것이 중요하다기보다도 모르는 기능이나 자료구조가 나오면 반드시 help(something)
을 써서 설명문서를 읽어보라는 것입니다.
오늘 고생하셨고 내일 뵐게요!!
flush 인자가 어떤 역할을 하는지 궁금했는데 덕분에 해결이 됐네요
좋은 글 감사합니다