여기 있어요 : Home Dive Into Python 3

“파이썬3로 뛰어들기”의 새로운 점

여기가 들어왔던 곳이 맞나?
— 핑크 플로이드, The Wall

 

준비 레벨

자, 시작하기 전에 질문을 몇 개 드릴테니 대답해 보세요. 첫째, 이 글을 읽고 계신 여러분은 파이썬 프로그래머인가요 ? 둘째, 제가 예전에 작성했던 파이썬으로 뛰어들기 (Dive Into Python) 라는 책을 읽었나요 ? 셋째, 만약 읽었다면 책으로 읽었나요? (그렇다면, 감사합니다 ^^) 마지막으로, 어찌됬던간에 파이썬 3 를 공부할 준비를 마쳤나요 ? 지금까지 제가 드린 질문에 전부 yes 라고 대답하셨다면, 이 장을 계속 읽어 나가셔도 됩니다. 하지만, 만약 여러분이 전부 no 라고 대답하셨다면, 여기에서 시작하세요.

파이썬 3를 설치하면 2to3라는 작은 어플리케이션도 함께 설치되는데요, 이 프로그램을 이용하면 파이썬 2 소스 코드를 파이썬 3 소스코드로 자동으로 변경시킬 수 있습니다. 2to3로 파이썬3 포팅하기라는 부록도 따로 빼서 준비했으니까 나중에 꼭 한번 읽어보시기 바랍니다. 2to3 툴이 파이썬 2 코드에서 파이썬 3 코드로 자동으로 변경해줄 수 있는 부분이란 문법의 변경이 대부분이기 때문에, 이 툴을 이용하다보면 파이썬3에서 변경된 문법을 자연스럽게 배울 수 있습니다. (예를 들어, 파이썬 3에서는 print는 더이상 구문이 아닌 함수이기 때문에, print x로 쓰면 안되고 print(x)로 써야 합니다.)

사례 연구: chardet 파이썬 3로 포팅하기 에서는 파이썬 2에서 파이썬 3로 포팅하면서 겪었던 저만의 경험담을 적어 봤습니다. (결국엔 해냈습니다. ^^). 제 작은 경험담이 여러분께 도움이 될 수도, 아닐 수도 있을텐데요. 어쨌건 여러분께서는 많은 걸 배워야 할 겁니다. 우선은 라이브러리가 어떻게 변경되었는지를 이해해야 합니다. 그래야 포팅하면서 발생하는 에러들과 제가 그걸 어떻게 고쳤는지 이해할 수 있으니까요. 사실 많은 문제들은 문자열 쪽에서 생긴거였어요.

문자열이라, 휴, 어디서부터 시작해야 할지 막막하네요. 파이썬 2에는 문자열(string)과 유니코드 문자열(unicode string)이 있었죠. 파이썬 3에는 바이트(byte)와 문자열(string)이 있습니다. 파이썬 3에서 모든 문자열은 유니코드 입니다. 그러니까 진짜 바이트를 다루고 싶으면 파이썬 3에서 새로 도입한 byte 타입을 사용하세요. 파이썬 3는 문자열(string)과 바이트(byte) 간의 묵시적 형 변환을 허용하지 않기 때문에, 여러분이 이 둘의 차이을 정확히 이해하지 못하고, 언제 무엇을 써야 할지 모른다면, 그 코드는 마치 시한폭탄을 안고 있는거나 마찬가지입니다.언젠가는 반드시 문제가 생길겁니다. 자세한 이야기는 문자열 장에서 계속하죠.

바이트와 문자열은 워낙 광범위하게 적용되는 내용이라, 이 책 전반에 걸쳐 계속 등장할 겁니다. 몇가지 예를 들면 아래와 같습니다.

여러분이 지금 당장은 유니코드에 관심이 없다고 하더라도 (안됬지만, 나중엔 어쩔 수 없이 봐야 할겁니다), 파이썬 3에서의 문자열 포맷팅에 대해서는 궁금하셨을겁니다. 왜냐하면, 파이썬 2에서와는 완전히 달라진 새로운 문자열 포맷팅이기 때문이죠. 반드시 읽어보셔야 합니다.

반복자(iterator)는 파이썬 3 전반에 걸쳐 사용됬습니다. 솔직히 말해, 저 자신도 이전에는 잘 몰랐던 걸 이번 기회에 많이 알게 되었습니다. 제가 파이썬에 뛰어들기라는 책을 처음으로 썼던 5년 전보다 198 프로 정도 이해가 깊어졌다고나 할까요. 여러분도 저처럼 반복자에 대한 이해가 깊어졌으면 좋겠습니다. 파이썬 2에서 리스트를 반환하던 많은 함수들이, 파이썬 3에서는 반복자를 반환하는 것으로 변경되었습니다. 아무리 귀찮더라도, 반복자 챕터의 뒷쪽 절반이랑 고급 반복자 챕터의 뒷부분 절반은 반드시 읽어보셔야 합니다.

여러분의 열화와 같은 성원 덕분에, 특별한 메소드 이름을 부록으로 첨부했습니다, 파이썬 공식문서인 “데이터 모델”과 비슷하지만, 나름 좀 더 자세히 파헤쳐 봤습니다.

제가 맨 처음 파이썬에 뛰어들기란 책을 썼던 때만 하더라도, 파이썬 XML 라이브러리 중 쓸만한 게 정말 거의 없었습니다. 디행히도 나중에 Fredrik 과 Lundh라는 분들이 ElementTree라는 꽤 괜찮은 XML 라이브러리를 만들었죠. 파이썬 위원회에서도 이 라이브러리가 마음에 들었던지 파이썬 표준 라이브러리에 포함시켰습니다. 이 책 후반부의 새로운 XML이라는 챕터는 ElementTree 라이브러리를 토대로 작성되었습니다. 예전 방식대로 XML을 파싱할 수도 있겠지만, 그렇게 하지 마세요. 별로 안좋습니다.

언어 자체의 변화가 아니라, 파이썬 커뮤니티의 변화로는 The Python Package Index (PyPI) 가 유명해진 점을 꼽을 수 있습니다. 파이썬 3에서는 여러분이 PyPI로 코드를 패키징하고 배포하는 절차를 간단하게 할 수 있도록 작은 유틸리티도 함께 제공합니다. 자세한 정보는 파이썬 라이브러리 패키징하기 챕터를 읽어 보세요.

© 2001–11 Mark Pilgrim