PEP 3000–Python 3000

Python 3000 개발 과정과 특징을 설명한다.
Python 3000, Python 3.0, Py3k는 모두 같은 프로젝트를 지칭한다.

  • PEP 번호 체계
    • : 3000-3099는 메타 PEP, 3100-3999는 기능 PEP
  • 타임라인
    • : Python 2.6과 3.0의 동시 출시 계획을 포함.
  • 호환성과 전환:
    • Python 3.0은 2.x와 하위 호환성이 없다.
    • Python 2.6은 “Py3k 경고 모드"와 일부 3.0 기능을 지원.
    • 2to3 도구를 통해 2.x 코드를 3.0으로 변환할 수 있다.
  • 개발 모델:
    • 2.6과 3.0을 동시 지원하는 프로젝트를 위한 권장 개발 방법을 제시.
  • 구현 언어:
    • Python 3000은 C로 구현되며, Python 2 코드베이스에서 진화합니다.

Python2와 Python3의 비교

문법 차이

기능Python 2Python 3
print문print "Hello"print("Hello")
정수 나눗셈5/2 → 25/2 → 2.5
예외 처리except Error, eexcept Error as e
range리스트 반환이터레이터 반환
문자열 포맷팅% 연산자 중심f-strings, format() 메서드

유니코드 표현 방식

항목Python 2Python 3
기본 문자열ASCIIUnicode (UTF-8)
유니코드 선언u"문자열"기본 지원
바이트 문자열strbytes
인코딩 처리명시적 처리 필요자동 처리
국제화 지원제한적완전 지원

성능 차이

항목Python 2Python 3
실행 속도기준10-15% 향상
메모리 관리GC 기본향상된 GC
멀티스레딩GIL 제한GIL 개선
비동기 처리제한적async/await 지원
최적화기본향상된 최적화

메모리 사용량 차이

항목Python 2Python 3
기본 객체 크기기준20-30% 감소
문자열 처리더 많은 메모리최적화된 메모리
컬렉션리스트 중심메모리 효율적인 뷰
캐시 처리기본향상된 캐시
메모리 해제덜 효율적더 효율적

5. 파일 입출력 성능 차이

항목Python 2Python 3
기본 I/O상대적 느림15-20% 향상
텍스트 처리ASCII 중심유니코드 최적화
버퍼링기본향상된 버퍼링
비동기 I/O제한적완전 지원
대용량 파일처리 제한적효율적 처리

라이브러리 지원 차이

특징Python 2Python 3
표준 라이브러리기본적인 모듈 제공개선된 모듈 및 새로운 모듈 추가 (예: asyncio, statistics)
서드파티 라이브러리 지원일부 레거시 라이브러리만 지원대부분의 주요 라이브러리가 지원 (예: TensorFlow, PyTorch)
새로운 라이브러리 개발거의 없음활발히 진행 중
유니코드 관련 라이브러리제한적 지원향상된 지원
레거시 라이브러리 호환성높음일부 호환되지 않을 수 있음
라이브러리 업데이트 빈도낮음 (지원 종료)높음 (지속적인 개선)
AI/ML 라이브러리 지원제한적광범위
웹 개발 프레임워크일부 구버전만 지원최신 버전 지원 (예: Django, Flask)
데이터 과학 라이브러리제한적 지원폭넓은 지원 (예: pandas, numpy 최신 버전)
보안 관련 라이브러리업데이트 중단지속적인 보안 업데이트

참고 및 출처