귀하의 프로젝트에 가장 적합한 것은 무엇입니까?

파이썬은 30년이 넘는 역사를 지녔음에도 불구하고, 여전히 전문 개발자들과 코딩 학습자 모두에게 큰 인기를 누리는 프로그래밍 언어입니다.

PYPL티오베 지수 모두 2023년 10월 기준으로 파이썬을 세계에서 가장 선호하는 언어로 꼽았습니다.

2022 스택 오버플로 개발자 설문조사 결과에서도 파이썬이 두 번째로 가장 선호되는 프로그래밍 언어로 나타났습니다. 따라서 파이썬을 배우고 활용하기로 결정한 개발자들은 취업 기회 및 경력 발전 측면에서 상당한 이점을 얻을 수 있습니다.

하지만 파이썬을 프로그래밍 언어로 선택한 후에는 또 다른 중요한 질문이 떠오릅니다. 프로젝트에서 파이썬 2를 사용해야 할까요, 아니면 파이썬 3을 사용해야 할까요? 이는 파이썬 개발자로서 제가 늘 고민해 왔던 질문 중 하나이며, 어떤 버전을 선택해야 할지 궁금하신 분들을 위해 이 글이 의사 결정을 돕고자 합니다.

파이썬 2란 무엇인가?

파이썬 2와 파이썬 3은 파이썬 프로그래밍 언어의 주요 두 버전입니다. 파이썬 2.0은 2000년에 처음 출시되었으며, 개발자들이 파이썬을 더 쉽게 배우고 활용할 수 있도록 다양한 기능과 개선 사항을 도입했습니다.

파이썬 2는 새로운 파이썬 기능에 대한 정보를 제공하고 언어에 새로운 기능을 제안하는 기본 메커니즘 역할을 하는 디자인 문서인 PEP(Python Enhancement Proposal)를 포함합니다.

파이썬 2는 매우 인기가 높아 개발자와 기업 모두에게 널리 사용되었지만, 2020년 1월 1일부로 지원이 종료되었습니다. 이후 파이썬 2에 대한 추가적인 개선은 이루어지지 않고 있으며, 파이썬 2의 최종 릴리스 버전은 2010년에 출시된 파이썬 2.7입니다.

파이썬 2의 지원 중단으로 인해, 관심은 자연스럽게 파이썬 언어의 다음 주요 버전으로 옮겨갔습니다.

파이썬 3란 무엇인가?

파이썬 3은 2008년 12월 3일에 처음 공개되었습니다. 파이썬 3은 파이썬 2에 존재했던 설계상의 결함과 보안 문제를 해결하기 위해 도입되었습니다. 파이썬 3에서는 파이썬 코딩 시 중복성을 줄이기 위해 언어에 전면적인 변화와 새로운 기능을 추가했으며, 파이썬 코드를 더욱 가독성 있게 만들고자 노력했습니다.

여기서 말하는 ‘중복성(redundancy)’이란 코드 내에 반복되거나 불필요한 코드가 존재하는 것을 의미합니다. 파이썬 3에서는 특히 파이썬 언어의 구문이 변경되었습니다. 파이썬 3의 변경 사항은 너무 커서 파이썬 3 코드가 파이썬 2와 호환되지 않습니다.

현재 모든 기업과 개발자들이 파이썬 3을 사용하고 있다고 생각할 수 있지만, 실상은 그렇지 않습니다. JetBrains에서 실시한 2022 파이썬 개발자 설문조사에 따르면, 2022년 기준으로 파이썬 개발자의 약 7%가 여전히 파이썬 2를 사용하고 있습니다. 설문 조사 결과, 파이썬 2는 주로 데이터 분석, 컴퓨터 그래픽, DevOps 분야에서 활용되고 있는 것으로 나타났습니다.

개발자들은 일반적으로 코드를 통해 작업을 수행하므로, 두 버전 간의 주요 차이점을 논하기 전에 파이썬 2와 파이썬 3의 구문 차이점을 보여주는 몇 가지 코드 예시를 살펴보겠습니다.

파이썬 2와 파이썬 3의 구문 차이점

파이썬 2와 파이썬 3의 차이점 중 하나는 표준 출력으로 인쇄하는 방식입니다. 파이썬 2에서는 ‘print’가 명령문으로 사용되는 반면, 파이썬 3에서는 ‘print’가 함수로 사용됩니다. 아래 코드 예시는 표준 출력을 인쇄할 때 파이썬 2와 파이썬 3의 차이점을 보여줍니다.

파이썬 2

print "Hello, World!"

결과:

파이썬 3

print("Hello, World!")

결과

코드 구문에서 파이썬 2와 파이썬 3의 또 다른 차이점은 타입 힌트의 사용입니다. 타입 힌트를 사용하면 변수의 유형, 매개변수 또는 반환 유형까지 지정할 수 있습니다. 이를 통해 코드의 오류를 줄이고, 코드에서 예상되는 유형을 명확하게 전달할 수 있습니다.

타입 힌트는 파이썬 3에서 지원되지만 파이썬 2에서는 지원되지 않습니다. 아래 코드 예시를 통해 파이썬 3에서 타입 힌트가 사용된 경우와 파이썬 2에서 타입 힌트가 없는 동일한 코드를 비교해 보겠습니다.

파이썬 3

아래 코드 예시에서는 ‘age’ 변수가 정수형이어야 함을 나타내기 위해 ‘int’ 어노테이션을 사용했습니다. ‘str’은 ‘greet()’ 함수에 대한 인수와 반환 유형에 어노테이션을 추가하는 데 사용됩니다.

# 타입 어노테이션 - age가 정수임을 나타내기 위해 int 사용
age: int = 30

# 타입 어노테이션 - greet() 함수의 인수 타입 및 반환 타입을 나타내기 위해 str 사용
def greet(name: str) -> str:
    return "Hello, " + name

result = greet("Alice")
print(result)
print("Your age is " + str(age))

결과:

Hello, Alice
Your age is 30

파이썬 2

해당 코드에는 타입 힌트가 없습니다. 또한, print 방식이 어떻게 다른지 확인하세요.

age = 30;
def greet(name):
    return "Hello, " + name

result = greet("Alice")
print result
print "Your age is " + str(age)

결과:

Hello, Alice
Your age is 30

파이썬 2와 파이썬 3 코드를 작성할 때 알 수 있는 또 다른 차이점은 정수 나눗셈의 결과입니다. 이를 확인하기 위해 파이썬 2와 파이썬 3에서 정수 나눗셈을 수행해 보겠습니다.

위 코드에서 파이썬 2에서 정수 나눗셈을 수행하면 정수 결과가 나오며 소수점 아래 숫자는 잘립니다. 반면 파이썬 3에서는 정수 나눗셈의 결과가 계산의 소수점 아래 부분을 포함하는 부동 소수점 값이 됩니다.

이러한 구문 차이를 보면, 파이썬 2를 선택해야 할까요, 아니면 파이썬 3을 선택해야 할까요? 파이썬 3이 파이썬 2의 개선된 버전이라고 생각하시나요? 아직 결정하지 못했다면 파이썬 2와 파이썬 3 중 어떤 것을 선택할지 결정하는 데 도움이 되도록 파이썬 2와 파이썬 3의 추가적인 차이점을 살펴보겠습니다.

파이썬 2와 파이썬 3의 차이점

파이썬 2와 파이썬 3의 주요 차이점은 다음과 같습니다.

기능/측면 파이썬 2 파이썬 3
출시 날짜 2000년 10월 16일 2008년 12월 3일
공식 지원 2020년 1월 1일 종료 현재 공식적으로 지원되는 파이썬 버전
성능 대부분의 벤치마크 테스트에서 파이썬 3보다 느림 대부분의 벤치마크 테스트에서 파이썬 2보다 빠름
구문 복잡하고 이해하기 어려울 수 있는 구문 중복성이 적고 읽고 이해하기 쉬운 단순한 구문
문자열 저장 기본적으로 ASCII로 저장 기본적으로 유니코드로 저장
정수 나눗셈 두 정수를 나누면 소수점 아래 부분을 자른 정수 결과 생성(예: 5/2 == 2) 두 정수를 나누면 부동 소수점 값 생성 (예: 5/2 == 2.5)
print 키워드 ‘print’는 문장 (예: print “Hello, world!”) ‘print’는 함수 (예: print(“Hello, world!”))
타입 힌트 타입 힌트에 대한 기본 지원 없음 변수 유형, 반환 값, 함수 파라미터를 지정할 수 있는 타입 힌트에 대한 기본 지원
반복 xrange() 함수 사용 xrange()보다 효율적인 range() 함수 사용
라이브러리 대부분의 라이브러리는 파이썬 2와 호환되도록 설계됨 많은 파이썬 3 라이브러리가 파이썬 2와 호환되지 않음
사용 지원 종료로 인해 점차적으로 사용 빈도 감소 개발자와 기업에서 널리 사용, 현재 가장 인기 있는 파이썬 버전

파이썬 2에서 파이썬 3으로 마이그레이션하는 방법

파이썬 3은 향상된 보안과 성능, 중복성이 거의 없는 더욱 명확하고 읽기 쉬운 구문을 제공하며 공식적으로 지원되는 파이썬 버전이므로 파이썬 2에서 파이썬 3으로 마이그레이션하는 것이 합리적입니다.

그러나 실제 마이그레이션 작업은 생각처럼 간단하지 않습니다. 파이썬 3은 이전 버전인 파이썬 2와 호환되지 않기 때문에 파이썬 2에서 파이썬 3으로 프로젝트를 마이그레이션하는 작업은 상당히 어려울 수 있으며, 프로젝트 규모에 따라 많은 시간과 노력이 필요할 수 있습니다.

예를 들어, 드롭박스의 경우 파이썬 언어의 창시자인 Guido van Rossum과 함께 파이썬 2에서 파이썬 3으로 성공적으로 마이그레이션하는 데 약 3년이 걸렸습니다.

파이썬 2에서 파이썬 3으로 마이그레이션하려면 먼저 두 버전 간의 차이점을 명확하게 이해하고 마이그레이션 비용과 애플리케이션이 얻을 수 있는 이점을 평가해야 합니다. 이 작업이 완료되면, 애플리케이션 중단 시 이전의 정상 작동 버전으로 롤백할 수 있도록 버전 제어 시스템을 구축해야 합니다.

많은 라이브러리가 파이썬 3으로 전환되었으므로, 애플리케이션이 의존하는 종속성을 살펴보고 파이썬 3과 호환되는지 확인하고 호환되는 종속성을 선택해야 합니다.

다음 단계는 파이썬 2에서 파이썬 3으로 코드를 변경하기 위해 코드베이스를 수정하는 것입니다. 이 과정이 가장 어려운 부분입니다. 수동으로 변경하는 것 외에도 파이썬에서는 2to3과 같은 도구를 제공합니다. 2to3은 파이썬 2 코드를 읽어 파이썬 3으로 변환하는 기능을 제공하여 마이그레이션 과정을 가속화하는 데 도움이 됩니다.

마이그레이션을 진행할 때 코드에서 발생하는 모든 문제를 테스트하고 수정하는 것이 중요합니다. 2to3에서 생성된 보고서를 통해 애플리케이션의 모든 문제를 평가하고 수정해야 합니다. 이 과정에서 자동화된 테스트 도구를 사용하면 테스트 프로세스를 가속화하고 높은 테스트 커버리지를 확보하는 데 도움이 될 수 있습니다.

마이그레이션 프로세스 전반에 걸쳐 프로세스를 문서화하는 것이 좋습니다. 또한 마이그레이션 시 점진적인 접근 방식을 취해야 합니다. 대규모 코드베이스의 경우, 전체 코드베이스를 한 번에 파이썬 3으로 마이그레이션하는 대신 여러 번에 걸쳐 애플리케이션 모듈을 마이그레이션하는 것이 좋습니다.

프로젝트에서 파이썬 2와 파이썬 3 중 선택 시 고려해야 할 요소

파이썬을 사용하여 프로젝트를 진행할 때 파이썬 2 또는 파이썬 3 중에서 선택해야 하는 경우 고려해야 할 몇 가지 사항이 있습니다.

이러한 고려 사항은 다음과 같습니다.

  • 경험 수준 – 파이썬 코딩을 처음 배우는 개발자라면 파이썬 3를 사용하는 것이 좋습니다. 대부분의 학습 자료가 파이썬 3을 기반으로 하고 있기 때문입니다. 하지만 프로젝트의 다양한 버전과 결과물에 대한 명확한 이해를 가진 숙련된 파이썬 개발자라면 파이썬 2 또는 파이썬 3을 사용할 수 있습니다. 이때는 프로젝트에 가장 적합하고 팀 구성원 대부분이 이해하는 버전을 선택하는 것이 좋습니다.
  • 레거시 코드 – 개발자들은 종종 파이썬 2로 작성된 대규모 코드베이스를 다루게 됩니다. 특정 상황에서는 코드베이스를 파이썬 3으로 마이그레이션하는 데 드는 비용이 얻을 수 있는 이점보다 클 수 있습니다. 이러한 경우 파이썬 2를 사용하는 것이 더 나을 수 있습니다.
  • 라이브러리 호환성 – 일부 오래된 파이썬 2 라이브러리는 아직 파이썬 3에서 작동하도록 완전히 업데이트되지 않았을 수 있습니다. 이러한 라이브러리에 크게 의존하는 프로젝트를 진행한다면 파이썬 2를 사용하는 것이 더 나을 수 있습니다.
  • 성능 – 매우 높은 성능이 필요한 애플리케이션을 구축하는 경우 파이썬 3을 사용하는 것이 좋습니다. 파이썬 3은 파이썬 2보다 성능이 뛰어나며 애플리케이션 성능을 향상시키는 다양한 기능을 제공합니다. 따라서 인스타그램이나 드롭박스처럼 고성능이 필요한 애플리케이션의 경우 파이썬 3을 선택해야 합니다.
  • 장기적인 실행 가능성 – 파이썬 2는 2020년에 수명이 종료되었고 더 이상 공식적으로 지원되지 않습니다. 따라서 새로운 프로젝트를 시작하거나 기존 프로젝트를 유지 관리하는 경우 파이썬 3을 사용하는 것이 가장 합리적인 선택입니다. 파이썬 3은 지속적인 업데이트와 보안 패치를 받을 수 있어 더 안전하고 미래 지향적인 버전입니다.

이상적으로는 공식적으로 지원되는 버전인 파이썬 3을 사용하여 모든 프로젝트를 진행하는 것이 좋습니다. 파이썬 3은 애플리케이션 개발 및 성능을 향상시키는 다양한 기능을 제공합니다.

하지만 파이썬 2 코드가 상당 부분 포함된 레거시 프로젝트를 다루고 있거나, 파이썬 2를 사용해야 하는 특별한 요구 사항이 있는 경우에 한해서만 파이썬 2를 사용해야 합니다.

결론

파이썬 개발자로서 제 경험에 따르면, 제가 진행했던 대부분의 파이썬 프로젝트는 파이썬 3을 사용하여 진행되었습니다. 향상된 디자인, 더 나은 성능, 뛰어난 보안, 더욱 깔끔한 구문과 중복성을 줄인 파이썬 3이 두 버전 간의 확실한 승자라고 생각합니다.

파이썬 3은 공식적으로 지원되는 버전이며 파이썬 언어의 미래라는 점을 고려할 때, 프로젝트를 진행할 때나 파이썬 코딩을 배우는 과정 모두에서 파이썬 3을 사용하는 것이 바람직합니다.

다음으로 Windows, Linux 및 macOS에서 파이썬 버전을 확인하는 방법을 확인해 보십시오.