Python3가 나온 지는 오래됐지만 아직도 오래된 버전인 Python2가 이용되고 있는 경우도 적지 않습니다. Python은 버전의 차이에 따라 코드를 쓰는 방식이 달라집니다. Python2와 Python3 중 어느 쪽을 학습해야 하는지 Python 입문자에게는 고민스러운 문제죠.
어째서 Python2 와 3 사이에서 고민하는가?
- 실무에서 Python2 를 사용하는 경우가 아직도 적지 않다
조금 더 상세히 설명하자면
- Python2만 사용할 수 있는 라이브러리가 있다
- Python2로 만든 프로그램을 Python3로 옮기는 것이 귀찮음
- Python2와 Python3은 일부 호환되지 않음
Python3는 새로운 버전이지만 사실 '2008년에 출시'된 것입니다. 벌써 10년 가까운 세월이 흘렀는데 왜 오래된 Python2와 새로운 Python3의 차이가 아직도 화제가 되는 걸까요? 그것은 아직 Python2에서만 이용할 수 있는 라이브러리가 적지 않다는 것입니다. Python 자체는 매우 기능이 적은 심플한 프로그래밍 언어이기 때문에 기능 추가를 하기 위한 라이브러리가 많이 존재합니다. 라이브러리는 개인이나 작은 기업이 만든 것도 적지 않고 이미 개발을 종료했거나 유지 보수가 지연되는 경우가 많습니다. 그렇기 때문에 Python3에서는 이용할 수 없거나 스스로 Python3용으로 코드를 고쳐 써야 하는 것입니다. 파이썬에는 전문적인 라이브러리도 많기 때문에 '아무래도 이 라이브러리를 사용하지 않으면 개발이 어렵다'라는 상황도 있습니다. 또한 Python2와 3은 일부 호환되지 않기 때문에 이미 Python2에서 개발된 애플리케이션을 Python3로 이행하는 것은 힘든 작업이 됩니다. Python2와 Python3의 어느 쪽에서도 사용할 수 있는 라이브러리를 개발하는 툴(six)이라고 하는 것도 있으므로, 어느 쪽에도 대응하는 라이브러리를 만드는 것은 가능합니다. 그래서 Python2로 만들어진 애플리케이션에 기능 추가나 유지 보수를 하는 경우에는 그대로 Python2가 사용되는 경우가 많습니다.
Python2 와 Python3, 어느 쪽을 공부해야 하는가?
- 고민하지 말고 Python3 을 선택하자
이제 새롭게 학습할 경우에는 망설이지 말고 Python3를 학습해 보세요. 메이저 라이브러리는 이미 Python3를 완전히 지원합니다. 현재 새로운 애플리케이션은 Python3에서 생성되는 경우가 더 많습니다. 라이브러리도 Python3를 지원하는 것을 선택하면 되기 때문에 차질이 생기는 일은 별로 없을 것입니다. Python2가 필요한 경우에만 Python3와의 차이를 기억하는 정도로 문제가 없습니다.
- Python3 의 최신 버전을 사용하자
Python3에도 Python3에서도 '3.0' '3.3' '3.5' '3.6' 등 세세한 버전의 차이가 있습니다. 파이썬은 수시로 사양이 바뀐 경력이 있기 때문에 주의가 필요할 수도 있습니다. 버전 '3.0' '3.1' '3.3 이상'에서는 각각 코드를 쓰는 방법도 달라집니다. 하지만 큰 차이는 없기 때문에 최신 버전을 선택해도 문제없을 것입니다.
어째서 python3 을 공부해야하는가?
사실 새로운 Python3 쪽이 복잡한 부분이 제거되어 있어 초보자들이 더 쉽게 학습할 수 있습니다. 또한 오래된 Python2의 최신 버전인 '2.7'은 공식적으로 2020년까지 지원되기 때문에 아직 전혀 사용할 수 있다고 생각하는 분들도 많습니다. 하지만 앞으로는 틀림없이 Python3로 이행될 것이기 때문에 그다지 기대하지 않는 것이 좋을 것입니다.
Python3 에서 Python2 코드를 사용해야하는 경우
- 2to3 라이브러리를 사용하자
Python3 환경에서 Python2 코드를 사용해야하는 경우, 완벽하지는 않지만 2to3 라이브러리를 통해 문제를 해결할 수 있습니다. 2to3 라이브러리는 Python3 인터프리터 설치시, 함께 설치되며 Python2 코드를 Python3 코드로 변환해줍니다.
※ 2to3 라이브러리는 Python 버전 3.13 부터는 더 이상 사용할 수 없습니다.
아래와 같은 파일명이 example.py 인 간단한 Python2 코드가 있습니다.
def greet(name):
print "Hello, {0}!".format(name)
print "What's your name?"
name = raw_input()
greet(name)
이것을 command line 에서 2to3 을 실행하여 Python3 코드로 바꿀 수 있습니다.
2to3 example.py
결과는 다음과 같습니다.
def greet(name):
print("Hello, {0}!".format(name))
print("What's your name?")
name = input()
greet(name)
조금 더 자세한 사용 방법은 Python 공식 홈페이지의 document 를 참고하시면, 상세한 사용 방법이 안내되어 있습니다.
https://docs.python.org/ko/3/library/2to3.html
2to3 를 사용하여 Python2 코드를 Python3 로 변환하여 문제를 해결할 수는 있지만, 경우에 따라서는 개발자가 의도하지 않은 코드로 변환되거나 에러가 발생하여 변환에 실패하는 등의 문제가 발생할 수 있습니다. 또한, 3.13 버전부터는 2to3 가 삭제되어 사용할 수 없게 되니, 특수한 경우가 아니라면 Python3 로 개발을 진행하는 것을 추천합니다.
'IT' 카테고리의 다른 글
Python 으로 무엇이 개발 가능한가? (0) | 2023.02.05 |
---|---|
Python 인기 Web Framework 소개 (0) | 2023.01.28 |
Java 와 JavaScript 의 차이 (0) | 2023.01.28 |
객체 지향이란 무엇인가 (0) | 2023.01.28 |
자바(Java) 의 장단점 (0) | 2023.01.28 |
댓글