더북(TheBook)

useargument.py에서 import sys 문장은 sys 모듈에 정의된 기능을 사용하겠다는 것을 파이썬에게 알려준다. sys 모듈 기능 중 argv는 명령 줄 인수 목록을 담고 있으며, 명령 줄에서 python3 useargument.py 다음에 전달한 공백으로 분리된 인수를 담고 있다. 자세한 메커니즘은 나중에 설명한다(2.1절). 일단 지금은 명령 줄에서 프로그램명 다음에 전달한 첫 번째 인수가 sys.argv[1]에, 두 번째 인수가 sys.argv[2]에, 그리고 그 뒤의 인수들이 계속해서 argv에 들어 있다고 알아 두면 된다. useargument.py와 마찬가지로 프로그램 안에서 사용한 sys.argv[1]이 명령 줄에 입력한 문자열을 나타낸다.

writeln() 외에 [프로그램 1.1.2]에서는 write() 함수를 호출한다. 이 함수는 writeln()과 같지만, 그저 문자열을 출력할 뿐 행은 바꾸지 않는다.

이 프로그램 역시 입력한 것을 그대로 출력하는 단순한 프로그램이라 얼핏 보기에는 그다지 흥미로워 보이지 않지만, 곰곰이 생각해보면 수행할 작업을 제어하기 위해 사용자로부터 정보를 입력받아 응답하는 것도 프로그램의 기본 기능 중 하나임을 알 수 있을 것이다. useargument.py가 보여주는 간단한 모델을 통해 파이썬의 기본 프로그래밍 메커니즘을 생각해볼 수 있을 뿐만 아니라, 흥미로운 다양한 계산 문제를 모두 처리할 수 있다.

조금 더 개념적으로 생각해보면 useargument.py는 그저 하나의 문자열(인수)을 다른 문자열(터미널에 출력되는 메시지)로 대응시키는 것일 뿐이라는 것을 알 수 있다. 이 개념을 이용하면 우리가 만드는 파이썬 프로그램은 입력 문자열을 출력 문자열로 변환하는 일종의 블랙박스라고 생각할 수 있다.

이 모델은 간단할 뿐만 아니라 이론적으로는 그 어떠한 계산 작업도 완료할 수 있게 해주는 범용성을 지녔다는 점에서 상당히 흥미롭다. 예를 들어 파이썬 컴파일러 자체도 그저 하나의 문자열(.py 파일)을 입력받아 다른 문자열(조금 더 기본적인 언어로 만들어진 대등한 프로그램)을 생성하는 프로그램일 뿐이다. 나중에 여러분은 재미있는 다양한 작업을 수행하는 프로그램을 작성할 수 있을 것이다(그러나 이 책에서는 컴파일러처럼 복잡한 프로그램은 만들지 않는다). 당분간은 프로그램의 입출력 종류와 크기에 제한을 둘 것이다. 1.5절에서는 프로그램의 입출력을 위해 더 정교한 메커니즘을 사용하는 방법을 살펴보고, 임의의 길이의 문자열을 입출력하고 음성이나 그림 등 다른 형태의 데이터를 처리할 수 있는 방법을 알아본다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.