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 2 | Python 3 |
---|
print문 | print "Hello" | print("Hello") |
정수 나눗셈 | 5/2 → 2 | 5/2 → 2.5 |
예외 처리 | except Error, e | except Error as e |
range | 리스트 반환 | 이터레이터 반환 |
문자열 포맷팅 | % 연산자 중심 | f-strings, format() 메서드 |
유니코드 표현 방식#
항목 | Python 2 | Python 3 |
---|
기본 문자열 | ASCII | Unicode (UTF-8) |
유니코드 선언 | u"문자열" | 기본 지원 |
바이트 문자열 | str | bytes |
인코딩 처리 | 명시적 처리 필요 | 자동 처리 |
국제화 지원 | 제한적 | 완전 지원 |
성능 차이#
항목 | Python 2 | Python 3 |
---|
실행 속도 | 기준 | 10-15% 향상 |
메모리 관리 | GC 기본 | 향상된 GC |
멀티스레딩 | GIL 제한 | GIL 개선 |
비동기 처리 | 제한적 | async/await 지원 |
최적화 | 기본 | 향상된 최적화 |
메모리 사용량 차이#
항목 | Python 2 | Python 3 |
---|
기본 객체 크기 | 기준 | 20-30% 감소 |
문자열 처리 | 더 많은 메모리 | 최적화된 메모리 |
컬렉션 | 리스트 중심 | 메모리 효율적인 뷰 |
캐시 처리 | 기본 | 향상된 캐시 |
메모리 해제 | 덜 효율적 | 더 효율적 |
5. 파일 입출력 성능 차이#
항목 | Python 2 | Python 3 |
---|
기본 I/O | 상대적 느림 | 15-20% 향상 |
텍스트 처리 | ASCII 중심 | 유니코드 최적화 |
버퍼링 | 기본 | 향상된 버퍼링 |
비동기 I/O | 제한적 | 완전 지원 |
대용량 파일 | 처리 제한적 | 효율적 처리 |
라이브러리 지원 차이#
특징 | Python 2 | Python 3 |
---|
표준 라이브러리 | 기본적인 모듈 제공 | 개선된 모듈 및 새로운 모듈 추가 (예: asyncio, statistics) |
서드파티 라이브러리 지원 | 일부 레거시 라이브러리만 지원 | 대부분의 주요 라이브러리가 지원 (예: TensorFlow, PyTorch) |
새로운 라이브러리 개발 | 거의 없음 | 활발히 진행 중 |
유니코드 관련 라이브러리 | 제한적 지원 | 향상된 지원 |
레거시 라이브러리 호환성 | 높음 | 일부 호환되지 않을 수 있음 |
라이브러리 업데이트 빈도 | 낮음 (지원 종료) | 높음 (지속적인 개선) |
AI/ML 라이브러리 지원 | 제한적 | 광범위 |
웹 개발 프레임워크 | 일부 구버전만 지원 | 최신 버전 지원 (예: Django, Flask) |
데이터 과학 라이브러리 | 제한적 지원 | 폭넓은 지원 (예: pandas, numpy 최신 버전) |
보안 관련 라이브러리 | 업데이트 중단 | 지속적인 보안 업데이트 |
참고 및 출처#