>  기사  >  백엔드 개발  >  Python 3.11의 최고의 새로운 기능 및 기능 수정

Python 3.11의 최고의 새로운 기능 및 기능 수정

WBOY
WBOY앞으로
2022-05-30 18:57:552818검색

이 기사는 python에 대한 관련 지식을 제공하며, 주로 버전 3.11의 최고의 새로운 기능과 기능 수정 사항을 소개합니다. 다음은 Python 3.11의 가장 중요한 새로운 기능과 Python 3.11에 미치는 영향에 대한 개요입니다. Python 개발자의 의미를 살펴보세요. 모든 사람에게 도움이 되기를 바랍니다.

Python 3.11의 최고의 새로운 기능 및 기능 수정

추천 학습: python 동영상 튜토리얼

Python 프로그래밍 언어는 매년 상반기에 기능이 제한된 베타 버전이 출시되며 최종 버전은 연말. Python 3.11의 기능 세트가 방금 완성되었으며 테스트용 베타 버전이 제공됩니다. 개발자는 비프로덕션 코드에서 이 최신 버전을 사용하여 프로그램과 충돌하지 않는지 확인하고 코드가 성능 향상의 이점을 얻을 수 있는지 이해하는 것이 좋습니다.

다음은 Python 3.11의 가장 중요한 새로운 기능과 해당 기능이 Python 개발자에게 의미하는 바에 대한 개요입니다.

속도 개선:

Python 3.11에는 개별 성능이 많이 향상되었지만 가장 큰 것은 전용 적응형 인터프리터입니다. 객체의 유형은 거의 변경되지 않으므로 인터프리터는 이제 실행 중인 코드를 분석하고 일반 바이트코드를 특정 유형의 바이트코드로 바꾸려고 시도합니다. 예를 들어 이진 연산(더하기, 빼기 등)은 정수, 부동 소수점 및 문자열에 대한 특수 버전으로 대체될 수 있습니다.

Python 3.11에서는 Python 함수 호출에 필요한 오버헤드도 줄어듭니다. 함수 호출을 위한 스택 프레임은 이제 더 적은 메모리를 사용하고 더 효율적으로 설계되었습니다. 또한 재귀 호출은 테일 최적화가 아니지만(어차피 Python에서는 불가능할 수 있음) 이전 버전보다 더 효율적입니다. Python 인터프리터 자체도 더 빠르게 시작되고 Python 런타임에 필요한 핵심 모듈이 더 효율적으로 저장되고 로드됩니다.

                  공식 Python 벤치마크 제품군에 따르면 Python 3.11은 버전 3.10보다 약 1.25배 빠르게 실행됩니다. 이 속도 향상은 전반적인 측정값입니다. 어떤 것들은 훨씬 빠르지만 다른 많은 것들은 단지 약간 더 빠르거나 거의 동일합니다. 그럼에도 불구하고 이러한 개선 사항의 가장 좋은 점은 무료라는 것입니다. 3.11 속도 향상을 활용하기 위해 Python 프로그램의 코드를 변경할 필요가 없습니다.

향상된 오류 메시지:

3.11의 또 다른 매우 유용한 기능은 더 자세한 오류 메시지입니다. Python 3.10에는 인터프리터의 새로운 파서 덕분에 이미 더 나은 오류 보고 기능이 있습니다. 이제 Python 3.11에서는 이를 확장하여 주어진 표현식의 특정 부분이 오류를 일으켰는지에 대한 자세한 피드백을 제공합니다.

오류를 발생시키는 다음 코드를 생각해 보세요.

x = [1,2,3]
z = x[1][0]

Python 3.10에서는 다음과 같은 오류 메시지가 표시되는데 이는 별로 도움이 되지 않습니다.

  File "C:\Python311\code.py", line 2, in <module>
    z = x[1][0]
TypeError: 'int' object is not subscriptable

Python 3.11에서는 어떤 int가 컴파일할 수 없는 코드인지 알아내도록 하는 대신 Python 3.11에서는 오류 추적은 오류를 생성한 줄의 정확한 부분을 가리킵니다.

  File "C:\Python311\code.py", line 2, in <module>
    z = x[1][0]
        ~~~~^^^
TypeError: 'int' object is not subscriptable

이제 문제가 어디에 있는지 꽤 분명해졌습니다.

예외 개선:

Python의 오류 처리 메커니즘은 Python 3.11에서 많은 새로운 기능을 얻었습니다.

1 새로운 Except* 구문과 새로운 ExceptionGroup 예외 유형을 사용하여 여러 예외를 처리합니다. 이를 통해 비동기식 또는 동시 메서드를 처리할 때나 작업을 재시도할 때 여러 오류를 처리할 때와 같이 동시에 여러 오류가 발생할 수 있는 문제를 우아하게 처리할 수 있습니다.

2. "비용 없음" 예외: 실제로 예외가 발생하지 않는 한 이제 프로그램에 대한 메모리 소비가 없습니다. 이는 try/제외 블록의 기본 경로가 더 빠르고 메모리를 덜 사용한다는 것을 의미합니다.

3. 예외를 포착하는 데 필요한 시간이 약 10% 단축됩니다.

4. 상황별 주석을 통해 예외를 개선하여 코드 블록에서 예외를 분리할 수 있습니다.

유형 부스트:

Python의 유형 힌트 기능을 사용하면 대규모 코드 기반을 더 쉽게 관리하고 분석할 수 있으며, Python 3.5부터 유형 힌트의 성능이 개정될 때마다 크게 향상되었습니다. Python 3.11에는 몇 가지 새로운 유형 힌트가 도입되었습니다.

자체 유형:

클래스 메서드는 자신의 유형을 반환하기 전에 게으르고 상세한 선언이 필요합니다. .Self 유형 패턴을 사용하면 클래스 메서드의 반환 값을 더 쉽게 선언할 수 있습니다. 이러한 방법의 분석 도구를 통해 유용하고 예측 가능한 결과를 얻을 수 있습니다.

임의의 문자열 리터럴 유형:

이전에는 유형 주석에서 주어진 변수가 문자열 리터럴, 즉 소스 코드에 정의된 문자열이어야 함을 정의할 수 없었습니다. 새로운 유형. LiteralString 주석은 이 문제를 해결합니다. 새로운 주석을 사용하면 linter는 변수가 소스에 정의된 문자열인지 아니면 소스에 정의된 문자열로만 구성된 새 문자열인지 테스트할 수 있습니다.

데이터 클래스 변환:

Python 3.7부터 데이터 클래스를 사용하면 초기화 매개변수를 기반으로 속성을 생성하는 일반적인 패턴을 따르는 클래스를 더 쉽게 정의할 수 있습니다. 그러나 데이터 클래스처럼 동작하는 것(데이터 클래스 자체는 아님)이 유형 주석을 사용하여 동작을 선언하도록 허용하는 표준 메커니즘은 없습니다. 데이터 클래스 변환은 지정된 함수, 클래스 또는 메타클래스가 데이터 클래스처럼 동작한다는 것을 컴파일러에 알리기 위해 type.dataclass_transform 수정자를 추가합니다.

변수 제네릭:

원래 제네릭 제안에는 단일 매개변수화된 유형을 사용하여 제네릭 함수를 지정하는 방법인 TypeVar가 포함되었습니다. 예를 들어 유형 T는 int 또는 float가 될 수 있습니다. Python 3.11에는 유형뿐만 아니라 튜플로 표시되는 유형 범위에 대한 자리 표시자를 지정하는 데 사용할 수 있는 TypeVarTuple 또는 "변수 제네릭"이 추가되었습니다. 이는 제공된 배열의 모양이 올바른지 여부와 같은 오류를 미리 확인할 수 있는 NumPy와 같은 라이브러리에서 특히 유용합니다.

stdlib의 TOML 읽기 전용 지원:

Python은 TOML 또는 Tom의 명시적인 최소 언어를 구성 형식(예: pyproject.TOML)으로 사용하지만 TOML 형식 파일을 표준 라이브러리 모듈로 읽는 기능을 노출하지 않습니다. Python 3.11에서는 이 문제를 해결하기 위해 tomllib를 추가했습니다. tomllib는 이를 위해 TOML 파일을 생성하거나 작성하지 않으므로 Tomli-W 또는 TOML Kit와 같은 타사 모듈이 필요합니다.

정규식의 원자 그룹화 및 가속화:

Python의 re 모듈은 정규식을 처리하는 데 사용되며, 다른 정규식 구현에서 볼 수 있는 일부 기능이 부족합니다. 하나는 다른 언어에서 널리 지원되는 원자 그룹화입니다. Python 3.11은 이제 원자 그룹화에 대한 일반적인 구문(예: (?>…)을 사용하여 이 패턴을 지원합니다.

re 모듈의 패턴 일치 엔진도 약간 다시 작성되었으며 약 10% 더 빠르게 실행됩니다.

From the 표준 라이브러리 "불량 배터리" 제거:

PEP 594는 Python 표준 라이브러리에서 소위 방전된 배터리 또는 오래되거나 유지 관리되지 않는 모듈을 제거하려는 노력을 시작했습니다. Python 3.11부터 이러한 라이브러리는 사용되지 않는 것으로 표시됩니다. 하지만 아직 제거되지는 않았습니다. Python 3.13에서는 완전히 제거됩니다.

Python 3.11의 기타 새로운 기능, 수정 사항 및 변경 사항:

Python 3.11에는 여러 가지 작은 개선 사항이 있습니다.

1. Python 개체를 업데이트해야 합니다. 이제 네임스페이스가 느리게 생성되고 네임스페이스 사전이 가능한 경우 키를 공유하기 때문입니다.

2. 모든 키가 유니코드인 사전은 더 이상 해시를 저장할 필요가 없으므로 사전 크기가 줄어들고 캐시 효율성이 높아집니다. 3. Python 런타임은 Python 인터프리터를 사용하며 이제 WebAssembly에 대한 컴파일을 실험적으로 지원할 수 있습니다. 이는 WASM 컴파일을 허용하는 PyScript와 같은 프로젝트의 향후 개발에 도움이 될 수 있습니다.

권장 학습:

python 비디오 튜토리얼

위 내용은 Python 3.11의 최고의 새로운 기능 및 기능 수정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제