Python 2 에서 Python 3 으로의 전환

Language/Python 2019.03.19 00:18 posted by TechNote.kr


PYthon을 처음 접한지 몇년이 지났지만 Python 3에 대한 거부감(?), 두려움(?)은 상당했다. 우선 접하고 있던 Python code들은 모두 2.7을 기준으로 작성되어 있었고, 나 또한 그 틀에서 벗어났을 때 코드가 동작하지 않을 수도 있다는 점에서 상호 호환이 되지 않는 Python 3으로의 전환은 어려웠다.  




하지만 수년내 python 2.7 의 지원이 종료될 예정임에 따라, 최근 신규로 작성하는 코드를 모두 Python 3로 작성을 시작해 보았다. 


내부적으로는 많은 차이가 있겠지만 자체적으로 느꼈던 차이점은 다음과 같았다. 



1. print 문 사용의 변화


기존 python 2에서는 print "ABC" 와 같이 사용이 가능하였으나 Python3 에서는 함수사용과 마찬가지로 중괄호를 넣어줘야 한다. 

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로 넘어가는 것이 적절해 보인다.