Python은 코드의 가독성을 강조하는 철학을 가진 고급 해석 프로그래밍 언어입니다.
1년간의 개발 끝에 파이썬 프로그래밍 언어의 새로운 버전인 3.11이 출시되었습니다. 새 버전은 1년 반 동안 공식 지원되며, 이후 3년 반 동안 취약점을 해결하기 위한 패치가 배포될 예정입니다.
동시에 Python 3.12 브랜치의 알파 테스트가 시작되었습니다 (새로운 개발 일정에 따르면 새 브랜치 작업은 이전 브랜치 출시 5개월 전에 시작하여 다음 버전 출시 시점에 알파 테스트 단계에 도달합니다).
Python 3.12 분기는 XNUMX개월 동안 알파 릴리스로 제공되며 이 기간 동안 새로운 기능이 추가되고 버그가 수정됩니다. 이후 XNUMX개월간 베타 테스트를 진행하며, 그 동안 새로운 기능 추가를 금지하고 버그 수정에 집중할 예정이다. 출시 XNUMX개월 전 지점은 출시 후보 단계에 있으며 이 단계에서 최종 안정화가 이루어집니다.
Python 3.11의 주요 새 기능
이번 새 버전 에는 성능 최적화를 위한 상당한 작업이 포함되어 있습니다 . 새로운 브랜치에는 함수 호출의 가속 및 인라인 배포 , 일반적인 연산에 빠른 인터프리터 사용, 그리고 Cinder 및 HotPy 프로젝트에서 개발한 최적화 기능이 통합되었습니다. 작업 부하에 따라 코드 실행 속도가 10%에서 60%까지 향상됩니다. 평균적으로 pyperformance 테스트 스위트에서 성능이 25% 향상되었습니다.
바이트코드 캐싱 메커니즘이 재설계되어 인터프리터 시작 시간이 10~15% 단축되었습니다. 이제 바이트코드를 포함하는 객체는 인터프리터에 의해 정적으로 할당되므로 캐시에서 가져온 바이트코드를 디코딩하고 바이트코드를 포함하는 객체를 메모리에 동적으로 배치하기 위한 변환 단계를 생략할 수 있습니다.
예외 그룹 지원 기능이 추가되어 프로그램이 여러 가지 예외를 동시에 생성하고 처리할 수 있게 되었습니다. 여러 예외를 그룹화하고 결합하기 위한 새로운 예외 유형인 ExceptionGroup과 BaseExceptionGroup이 제안되었으며, 그룹 내 예외를 구분하기 위한 "except*" 표현식이 추가되었습니다.
새로운 LiteralString 타입이 추가되었습니다. 이 타입은 LiteralString 타입과 호환되는 리터럴 문자열만 포함할 수 있습니다 ( 즉, 일반 문자열과 LiteralString 타입의 문자열만 가능하며, str 타입의 임의 문자열이나 여러 문자열이 결합된 문자열은 포함할 수 없습니다). LiteralString 타입을 사용하면 함수에 전달되는 문자열 인수를 제한하여, SQL 쿼리나 셸 명령에 사용할 문자열을 생성할 때처럼 취약점이 발생할 수 있는 문자열의 일부를 임의로 치환하는 것을 방지할 수 있습니다.
또한, 타입 딕셔너리(TypedDict) 의 개별 요소 에 필수 및 선택 항목을 표시하여 필수 필드와 선택 필드를 구분할 수 있는 기능도 제공됩니다(기본적으로 total 매개변수가 False로 설정되지 않은 경우 선언된 모든 필드는 필수입니다).
클래스, 메서드 및 함수 데코레이터인 `@dataclass_transform`이 추가되었습니다 . 이 데코레이터가 지정되면 정적 타입 검사기는 해당 객체가 `@dataclasses.dataclass` 데코레이터를 사용하는 것처럼 처리합니다.
이 새 버전에서 눈에 띄는 다른 변경 사항 :
- 정규식에서 원자 그룹화((?>…)) 및 질투(소유) 수량자(*+, ++, ?+, {m,n}+)를 사용하는 기능이 추가되었습니다.
- TypeVarTuple 유형이 추가되어 하나의 유형이 아닌 임의의 수의 유형을 다루는 TypeVar와 달리 변수 제네릭을 사용할 수 있습니다.
- 표준 라이브러리에는 TOML 형식을 구문 분석하는 기능이 있는 tomllib 모듈이 포함되어 있습니다.
- add_note() 메서드가 BaseException 클래스에 추가되어 예외에 텍스트 메모를 첨부할 수 있습니다. 예를 들어 예외가 발생했을 때 사용할 수 없었던 컨텍스트 정보를 추가할 수 있습니다.
- 현재 개인 클래스를 나타내기 위해 특수 유형 Self가 추가되었습니다. Self는 TypeVar를 사용하는 것보다 간단한 방법으로 클래스의 인스턴스를 반환하는 메서드에 주석을 추가하는 데 사용할 수 있습니다.
- "-P" 명령줄 옵션과 PYTHONSAFEPATH 환경 변수를 추가하여 sys.path에 대한 잠재적으로 안전하지 않은 파일 경로의 자동 연결을 비활성화합니다.
- Windows 플랫폼용 py.exe 유틸리티는 "-V:" 구문을 지원하도록 크게 향상되었습니다. / "에 덧붙여 "- . ».
- 많은 C API 매크로가 일반 또는 정적 인라인 함수로 변환되었습니다.
- uu, cgi, 파이프, crypt, aifc, 청크, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev 및 sunau 모듈은 더 이상 사용되지 않으며 Python에서 제거됩니다. 3.13 릴리스.
- PyUnicode_Encode* 기능을 제거했습니다.
- TaskGroup 클래스는 작업 그룹이 완료될 때까지 기다리는 비동기 컨텍스트 관리자의 구현과 함께 asyncio 모듈에 추가되었습니다.
- 그룹에 작업을 추가하는 것은 create_task() 메서드를 사용하여 수행됩니다.
마지막으로, 이 주제에 대해 더 자세히 알고 싶으시다면 다음 링크 에서 자세한 내용을 확인하실 수 있습니다 .