🔥 파이썬 버전

329자
5분

파이썬은 시간이 지남에 따라 여러 버전으로 발전해왔습니다. 주요 버전으로는 파이썬 2와 파이썬 3가 있으며, 이 두 버전 사이에는 중요한 차이점들이 존재합니다. 이 장에서는 각 버전의 특징과 차이점, 그리고 호환성에 대해 자세히 알아보겠습니다.

파이썬 2의 특징

파이썬 2는 2000년에 출시되었으며, 이 버전은 많은 개발자와 회사에 의해 널리 사용되었습니다. 파이썬 2는 유니코드 지원과 같은 중요한 기능들을 도입했지만, 이후 파이썬 3의 출시와 함께 점차 사용이 감소했습니다.

python
# Python 2에서의 문자열과 유니코드 표현
print "안녕하세요"  # 일반 문자열
print u"안녕하세요" # 유니코드 문자열
 
python
# Python 2에서의 문자열과 유니코드 표현
print "안녕하세요"  # 일반 문자열
print u"안녕하세요" # 유니코드 문자열
 

파이썬 3의 등장

파이썬 3는 2008년에 처음 출시되었으며, 파이썬 2와 비교할 때 많은 개선이 이루어졌습니다. 예를 들어, 모든 문자열이 유니코드로 처리되고, 일부 구문이 간결해졌으며, 라이브러리들이 개선되었습니다.

python
# Python 3에서의 문자열 표현
print("안녕하세요")  # 모든 문자열은 기본적으로 유니코드
 
python
# Python 3에서의 문자열 표현
print("안녕하세요")  # 모든 문자열은 기본적으로 유니코드
 

주요 차이점: print 함수

파이썬 2와 3의 가장 눈에 띄는 차이 중 하나는 print 문의 사용 방식입니다. 파이썬 2에서는 print가 문(statement)이었지만, 파이썬 3에서는 함수(function)로 변경되었습니다.

python
# Python 2
print "Hello, world!"
 
# Python 3
print("Hello, world!")
 
python
# Python 2
print "Hello, world!"
 
# Python 3
print("Hello, world!")
 

문자열과 바이트 타입

파이썬 3에서는 문자열과 바이트 타입이 명확히 구분됩니다. 이는 국제화와 대규모 데이터 처리에 있어 중요한 개선입니다.

python
# Python 3에서의 문자열과 바이트
s = "안녕하세요"   # 문자열 (유니코드)
b = s.encode('utf-8') # 바이트 타입
print(b)
 
python
# Python 3에서의 문자열과 바이트
s = "안녕하세요"   # 문자열 (유니코드)
b = s.encode('utf-8') # 바이트 타입
print(b)
 

정수 나눗셈의 변화

파이썬 2에서는 정수 나눗셈의 결과가 정수였지만, 파이썬 3에서는 실수형으로 변경되었습니다. 이는 더 직관적인 수학적 처리를 가능하게 합니다.

python
# Python 2
print 7 / 2  # 결과: 3
 
# Python 3
print(7 / 2)  # 결과: 3.5
 
python
# Python 2
print 7 / 2  # 결과: 3
 
# Python 3
print(7 / 2)  # 결과: 3.5
 

파이썬 2와 3의 호환성

파이썬 2와 3 사이에는 호환되지 않는 부분들이 많습니다. 이 때문에 많은 라이브러리와 프레임워크는 두 버전을 모두 지원하기 위해 많은 노력을 기울여야 했습니다. 최근에는 대부분 파이썬 3만 사용하고 있습니다.

연습문제

  1. 파이썬 2와 3의 주요 차이점 세 가지를 설명해보세요.
  2. 파이썬 3에서 print 문의 사용 방법에 대해 예제와 함께 설명해보세요.
  3. 문자열과 바이트 타입의 차이를 파이썬 3의 예제를 들어 설명해보세요.
  4. 파이썬 2와 3에서의 정수 나눗셈의 차이를 예제와 함께 설명해보세요.
  5. 파이썬 2와 3의 호환성 문제에 대해 자신의 의견을 서술해보세요.

YouTube 영상

채널 보기
C++ 속의 펑터 | 프로그래머를 위한 카테고리 이론
미들웨어 vs 가드, 왜 NestJS에서는 가드가 더 똑똑할까? | NestJS 가이드
NestJS 커스텀 데코레이터 인자 전달 및 파이프 검증 활용법 | NestJS 가이드
변환 파이프로 컨트롤러 코드 깔끔하게 만들기 | NestJS 가이드
NestJS 가드, 바이딩과 스코프 | NestJS 가이드
NestJS 인터셉터에서 map 연산자로 응답을 변환하는 방법 | NestJS 가이드
입력을 전처리하는 Functor - Contravariant와 contramap 이해하기 | 프로그래머를 위한 카테고리 이론
NestJS 역할 기반 접근 권한 부여 - Guard, Reflector | NestJS 가이드