PYthon을 처음 접한지 몇년이 지났지만 Python 3에 대한 거부감(?), 두려움(?)은 상당했다. 우선 접하고 있던 Python code들은 모두 2.7을 기준으로 작성되어 있었고, 나 또한 그 틀에서 벗어났을 때 코드가 동작하지 않을 수도 있다는 점에서 상호 호환이 되지 않는 Python 3으로의 전환은 어려웠다.
하지만 수년내 python 2.7 의 지원이 종료될 예정임에 따라, 최근 신규로 작성하는 코드를 모두 Python 3로 작성을 시작해 보았다.
내부적으로는 많은 차이가 있겠지만 자체적으로 느꼈던 차이점은 다음과 같았다.
1. print 문 사용의 변화
python 2에서와 같은 형식으로 사용하려고 하면 다음과 같은 에러가 발생한다.
>>> print "ABC" File "", line 1 print "ABC" ^ SyntaxError: Missing parentheses in call to 'print' >>>
2. Python2 / Python3 간 외부 Library 의 호환 불가
이 부분이 어려운 부분 중 하나였으나 많이 해결된 부분이기도 하다. Python 2 와 Python 3 간에는 Library 호환이 되지 않기 때문에 마치 별도의 언어 처럼 Python 2 에는 Python 2 용 Library 를 사용하여야 하고 Python 3 도 마찬가지 이다.
하지만 최근에는 Python 2 Library 를 지원하면 동일한 API 로 Python 3 또한 일반적으로 지원하기 때문에 이전과 같은 어려움은 많이 사라졌다. (하지만 일부 Library, 예를 들면 mechanize 와 같이 python 2만 지원하는 library 가 있어 대체 library 로 다시 코드를 작성해야 하는 경우가 남아 있긴하다. )
막상 시도해 보니 위 처럼 Python 2에서 Python 3로 넘어 오는 장벽은 높지만은 않은 것 같다. 이미 어려운 점들이 고려되어 완화되어 있기에 더 이상 발전할 예정이 없는 python 2 에 머물러 있기 보다는 python 3로 넘어가는 것이 적절해 보인다.
'Language > Python' 카테고리의 다른 글
Python - with, context manager에 대한 이해. (0) | 2019.11.16 |
---|---|
Python - configparser, 기본적인 설정파일을 다루는 모듈 (0) | 2019.10.11 |
Python - 지능형 리스트 (List Comprehension)/제너레이터 표현식 (Generator expression) 의 이해 및 비교 (0) | 2019.09.13 |
Python - random(), 임의의 수(난수)를 구하는 함수 (0) | 2019.03.20 |
Python - id(), object의 unique 값(memory address)를 보여주는 함수 (0) | 2019.03.18 |
Python - if __name__ == __main__ 의 의미 (0) | 2019.02.08 |
Python - package와 module의 차이 (0) | 2018.06.16 |
Python - datetime/time module, 현재 시간 출력 방법 (0) | 2018.06.16 |