Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 2.7.x와 Python 3.x의 핵심 차이점 완벽 정리

파이썬 3.0의 탄생 배경

파이썬(Python) 3.0은 2008년 12월에 출시되었습니다. 이 버전은 기존 버전에 있던 여러 설계상의 결함을 바로잡기 위해 개발되었으며, 그 핵심 원칙은 '오래된 방식을 제거하여 기능의 중복을 줄인다'는 것이었습니다.

다만 파이썬 3.0은 하위 호환성(backward compatibility)을 제공하지 않습니다. 즉, 파이썬 2.x 문법으로 작성된 프로그램은 파이썬 3.x 인터프리터에서 그대로 실행할 수 없습니다. 파이썬 2.7은 2.x 시리즈의 마지막 메이저 릴리스로, 공식 지원도 2020년 1월에 종료되었습니다.

두 버전 사이에는 상당히 많은 차이가 있지만, 그중에서도 가장 눈에 띄는 핵심 차이점들을 아래에서 살펴보겠습니다.

Python 2.7과 Python 3.x의 주요 차이점

1. print: 키워드에서 내장 함수로

파이썬 2.7에서 print는 별도의 문(statement), 즉 키워드였습니다. 반면 파이썬 3.x에서는 print()내장 함수(built-in function)로 변경되었기 때문에 괄호 사용이 필수입니다.

print "Hello World"   # 파이썬 2에서는 허용되지만, 파이썬 3에서는 SyntaxError 발생
print("Hello World")  # 파이썬 2와 파이썬 3 모두에서 정상 동작

따라서 두 버전 모두에서 호환되는 코드를 작성하려면 항상 괄호를 함께 사용하는 습관을 들이는 것이 좋습니다.

2. raw_input()의 폐지와 input()의 통합

파이썬 2.7에서 사용되던 raw_input() 함수는 파이썬 3.x에서 폐기(deprecated)되었습니다. 대신 input() 함수가 그 역할을 대신하며, 입력받은 데이터를 항상 문자열(string)로 취급합니다. 숫자로 활용하려면 int()float() 등으로 형 변환을 해야 합니다.

3. 정수 나눗셈(Integer Division) 동작 변경

나눗셈 연산자의 동작 방식도 크게 달라졌습니다. 파이썬 2.x에서는 정수끼리 나누면 결과가 자동으로 잘려서(내림) 정수가 반환되지만, 파이썬 3.x에서는 실수(float) 결과를 반환합니다.

  • Python 2.x: 5 / 22
  • Python 3.x: 5 / 22.5

파이썬 3에서 정수 나눗셈(버림 나눗셈)을 원한다면 // 연산자를 사용하면 됩니다. 예를 들어 5 // 22를 반환합니다.

4. 문자열의 유니코드(Unicode) 기본 지원

파이썬 3.x에서는 문자열이 기본적으로 유니코드로 처리됩니다. 반면 파이썬 2.x에서는 문자열을 유니코드로 다루려면 접두사 u를 붙여 명시적으로 선언해야 했습니다(예: u'hello'). 이러한 변화 덕분에 파이썬 3에서는 한글을 포함한 다국어 처리가 훨씬 직관적이고 안전해졌습니다.

5. int와 long 자료형의 통합

파이썬 2.x에서는 일반 정수(int)와 큰 정수(long)가 구분되어 있어, 큰 정수를 표현하려면 숫자 뒤에 L을 붙여야 했습니다(예: 100L). 반면 파이썬 3.x에서는 정수 객체가 기본적으로 무제한 정밀도(long)로 처리되므로 별도의 구분이 필요 없습니다. 아주 큰 숫자도 자릿수 제한 없이 자유롭게 다룰 수 있습니다.

정리

파이썬 3.x는 print 함수화, input 통합, 직관적인 나눗셈, 유니코드 기본 지원, 정수형 통합 등 코드의 일관성과 가독성을 높이는 방향으로 개선되었습니다. 현재 파이썬 2는 공식 지원이 종료되었으므로, 새 프로젝트는 반드시 파이썬 3.x 기반으로 작성하는 것이 권장됩니다.