지금까지 이 책의 내용을 잘 따라오신 분들이라면 아마 많은 파이썬 프로그램을 작성해 보는 연습을 해 보셨을 것이고, 파이썬이 더 편안해지고 친숙해졌을 것입니다. 또 이 책의 예제 프로그램 이외에 이것저것 다른 것들도 시도해 보신 분들도 계시겠죠. 혹시 아니시라면, 지금이라도 그렇게 하셔야 합니다. 자, 이제 남은 질문은 하나입니다. ‘앞으로 무엇을 하면 좋을까요?’
아래 문제를 한번 해결해 보시기 바랍니다:
명령줄에서 실행되는 주소록 프로그램을 만들어 보세요. 여기에는 친구, 가족, 동료 등을 카테고리별로 나눠 저장해 두며, 또 항목을 검색하거나 새로 추가 혹은 삭제할 수 있고 각 사람의 메일 주소, 전화번호 등의 정보를 담을 수 있도록 하세요. 또한 이러한 정보들을 저장해 두었다가 언제든 불러와 사용할 수 있게 하세요.
지금까지 살펴본 다양한 내용들을 다시 되짚어 보면 위 문제 정도는 쉽게 해결할 수 있을 것입니다. 힌트를 원하신다면 아래 꼬리말을 참조하세요 [^1].
위 문제를 성공적으로 해결하셨다면, 여러분은 이제 한 사람의 파이썬 프로그래머라고 불리기에 아무 손색이 없을 것입니다. 이제 저에게 이런 좋은 책을 써서 고맙다는 [메일 한 통을 보내 주세요]({{ book.contactUrl }}) ;-). 또, 이 책의 지속적인 발전을 위해 [책을 구입하시는 것도]({{ book.buyBookUrl }}) 고려해 주세요.
위 문제가 너무 쉬웠다면, 아래 문제도 해결해 보시기 바랍니다:
replace 명령을 직접 구현해 보세요. 이 명령은 주어진 파일들 내부의 모든 특정 문자열을 다른 문자열로 치환하는 데 사용됩니다.
여러분의 취향에 따라 구현은 단순히 문자열을 치환해 주는 식으로 구현될 수도 있고 패턴 검색 (정규 표현식)을 통해 좀 더 유연하게 구현될 수도 있습니다.
위 문제들이 너무 쉬웠다면, 다음 사이트에 주어진 과제들을 프로그램으로 구현해 보시기 바랍니다: https://github.com/thekarangoel/Projects#numbers (또는 Martyr2의 Mega Project List)
또 다음을 확인해 보세요:
프로그래밍 언어를 배우는 가장 좋은 방법은 코드를 직접 많이 써보고 또 많이 읽는 것입니다:
파이썬을 사용하다가 도저히 해결하지 못할 문제에 직면한 경우, python-tutor list (영문) 혹은 Python Korea 페이스북 그룹 (한글) 에 질문하시면 좋습니다.
질문하기 전에 먼저 직접 문제를 해결하려고 노력해 보신 후에 질문하시기 바라며, 다음을 읽어 보시기 바랍니다: 좋은 질문을 하는 방법(영문).
파이썬 세계에서 벌어지고 있는 최신 정보들을 접하고 싶으시면 공식 Python Planet 사이트 (영문) 를 확인하세요.
파이썬 패키지 인덱스 (Python Package Index, PyPI) 에 여러분의 프로그램에서 사용할 수 있는 수많은 오픈 소스 라이브러리가 존재합니다.
pip를 활용하면 이 라이브러리들을 쉽게 설치하고 사용할 수 있습니다.
플라스크(Flask) 를 이용하여 홈페이지를 만들 수 있습니다. 다음을 읽어 보세요:
파이썬 바인딩을 제공하는 여러 GUI(Graphical User Interface) 라이브러리를 사용하여 GUI 프로그램을 제작할 수 있습니다. 바인딩이란 C, C++ 혹은 다른 언어로 제작된 라이브러리를 파이썬에서 불러와 사용할 수 있도록 하는 일종의 연결 모듈을 말합니다.
다음은 파이썬에서 사용할 수 있는 GUI 라이브러리 목록입니다:
Kivy
PyGTK
PyQt
wxPython
그 외의 다른 도구들에 대해서는 파이썬 공식 사이트의 GuiProgramming 위키 페이지를 참조하세요.
지금까지는 파이썬을 위한 “표준” GUI 저작 도구는 없습니다. 따라서, 위 목록에서 여러분의 상황에 맞는 도구를 하나 골라 사용하시는 것을 추천합니다. 아마 첫 번째 고려해야 할 점은 여러분이 선택한 GUI 저작 도구를 구입할지 여부일 것이고, 두 번째 고려해야 할 점은 여러분의 프로그램이 윈도우 환경이나 맥, 리눅스 중 하나에서만 동작해도 되는지 아니면 모든 환경에서 잘 동작해야 하는지를 결정해야 할 것입니다. 이때 여러분이 리눅스 환경을 선택했다면 여러분이 KDE를 사용하는지 GNOME을 사용하는지도 고려 대상이 될 것입니다.
이에 대한 좀 더 상세하고 포괄적인 분석을 원하신다면, ‘The Python Papers, Volume 3, Issue 1’ (PDF) 의 26페이지를 참조하시기 바랍니다.
프로그래밍 언어는 크게 두 부분으로 나뉘는데, 그 하나는 언어이고 또 하나는 소프트웨어입니다. 여기서 언어란 어떻게 프로그램을 작성하는지 정의해 둔 것을 말하며, 소프트웨어란 무엇이 실제로 이렇게 작성된 프로그램을 실행시키는지를 말합니다.
지금까지 우리는 여러분이 작성한 프로그램을 실행시키기 위해 CPython 이라는 소프트웨어를 사용해 왔습니다. 이것은 C 언어로 작성되었기 때문에 CPython이라고 하며, 이는 가장 기본적인 파이썬 인터프리터 입니다.
그렇지만, 우리가 작성한 파이썬 프로그램을 실행할 수 있는 다양한 다른 소프트웨어들도 존재합니다:
이외에도 CLPython 이라는 Common Lisp로 작성된 파이썬 구현이 있습니다. 또 자바스크립트 인터프리터 상에서 동작하는 Brython 이 있는데, 이를 이용하면 자바스크립트 대신 파이썬을 이용하여 웹 브라우저상에서 동작하는 Ajax 프로그램을 제작할 수도 있습니다.
이러한 각각의 파이썬 구현은 각 분야에서 유용하게 사용됩니다.
여러분이 큰 프로그램을 제작해야 할 경우, 앞서 객체 지향 프로그래밍 챕터에서 배웠던 클래스에 기반한 객체 지향적 프로그래밍 대신 함수형 프로그래밍 방법에 대해서도 한 번쯤 배워 볼 필요가 있습니다:
이제 여러분은 이 책의 마지막에 다다랐습니다. 그러나, 이것은 또 다른 시작일 뿐입니다! 여러분은 이제 열의에 가득 찬 한 명의 파이썬 프로그래머이고, 파이썬을 활용해 더 많은 문제를 해결할 준비가 되어 있을 것입니다. 이전에는 생각하지 못했던 여러 자동화 스크립트를 작성해 보거나, 직접 게임을 만들어 보는 등 여러 가지 시도를 해 보기 바랍니다. 자, 이제 시작해 봅시다!
[^1]: 각 사람의 정보를 담는 클래스를 하나 만드세요. 그리고 각 사람의 이름을 키로 하고 사람의 객체를 값으로 하는 사전에 데이터를 저장해 둡니다. 그리고 pickle 모듈을 사용하여 이 객체를 여러분의 하드 디스크에 저장해 두세요. 또 사전의 내장 메소드를 활용하여 사람을 추가하고 삭제하거나 수정하는 기능을 구현하세요.