Python 3.9¶
Python 3.9.0(최종)은 2020년 10월 5일에 출시되었습니다. 3.9의 기능은 PEP 596 에 정의되어 있으며, 변경 사항에 대한 자세한 설명은 What’s New in Python 3.9 에서 확인할 수 있습니다
기능 |
상태 |
|
C 확장 타입의 메서드에서 모듈 상태에 대한 빠른 접근 |
해당 없음 |
|
dict에 합집합 연산자 추가 |
완료 [1] |
|
표준 컬렉션에서의 제네릭 타입 힌팅 |
||
유연한 함수 및 변수 어노테이션 |
||
CPython이 연간 릴리스 주기를 채택합니다. 연간 대신 2개월 릴리스 주기를 목표로 함 |
해당 없음 |
|
데코레이터에 대한 완화된 문법 제한 |
||
IANA 시간대 데이터베이스가 이제 표준 라이브러리의 zoneinfo 모듈에 존재합니다 |
||
접두사와 접미사를 제거하는 문자열 메서드 |
||
CPython은 이제 PEG 기반의 새로운 파서를 사용합니다 |
해당 없음 |
기타 언어 변경 사항:
__import__() 는 이제 ValueError 대신 ImportError 를 발생시킵니다 |
완료 |
Python은 이제 명령줄에서 지정된 스크립트 파일명의 절대 경로를 가져옵니다(예: python3 script.py): __main__ 모듈의 __file__ 속성이 상대 경로가 아닌 절대 경로가 되었습니다 |
|
기본적으로 최상의 성능을 위해 errors 인자는 첫 번째 인코딩/디코딩 오류에서만 검사되며, encoding 인자는 빈 문자열에 대해 때때로 무시됩니다 |
|
“”.replace(“”, s, n) 은 이제 0이 아닌 모든 n에 대해 빈 문자열 대신 s 를 반환합니다. 이는 이제 “”.replace(“”, s) 와 일관됩니다 |
|
이제 유효한 표현식이라면 무엇이든 데코레이터로 사용할 수 있습니다. 이전에는 문법이 훨씬 더 제한적이었습니다 |
|
aclose() / asend() / athrow() 의 병렬 실행이 이제 금지되며, ag_running 은 이제 비동기 제너레이터의 실제 실행 상태를 반영합니다 |
|
__iter__ 메서드 호출 시 발생하는 예기치 않은 오류가 더 이상 in 연산자와 operator 모듈의 함수 contains(), indexOf(), countOf()에서 TypeError로 가려지지 않습니다 |
|
괄호로 묶이지 않은 람다 표현식은 더 이상 컴프리헨션과 제너레이터 표현식의 if 절에서 표현식 부분이 될 수 없습니다 |
내장 모듈 변경 사항:
심각한 보안 우려로 인해 asyncio.loop.create_datagram_endpoint() 의 reuse_address 매개변수가 더 이상 지원되지 않습니다 |
|
ThreadPoolExecutor 가 종료를 완료할 때까지 대기하는 기본 실행기의 종료를 예약하는 새로운 코루틴 shutdown_default_executor() 가 추가되었습니다. 또한 asyncio.run() 이 새로운 코루틴을 사용하도록 업데이트되었습니다. |
|
프로세스 파일 디스크립터를 폴링하는 Linux 전용 자식 감시자 구현인 asyncio.PidfdChildWatcher 가 추가되었습니다 |
|
새로운 coroutine asyncio.to_thread() 가 추가되었습니다 |
|
타임아웃으로 인해 태스크를 취소할 때, asyncio.wait_for() 는 이제 양의 타임아웃에서와 마찬가지로 timeout이 <= 0인 경우에도 취소가 완료될 때까지 대기합니다 |
|
asyncio 는 이제 ssl.SSLSocket 소켓과 호환되지 않는 메서드를 호출할 때 TyperError 를 발생시킵니다 |
|
가비지 컬렉션은 부활한 객체에서 블로킹되지 않습니다 |
|
객체가 가비지 컬렉터에 의해 종료(finalize)되었는지 확인하는 새로운 함수 gc.is_finalized() 가 추가되었습니다 |
|
여러 인자를 처리하도록 math.gcd() 함수가 확장되었습니다. 이전에는 두 개의 인자만 지원했습니다 |
|
math.lcm() 이 추가되었습니다: 지정된 인자들의 최소공배수를 반환합니다 |
|
math.nextafter() 가 추가되었습니다: y 방향으로 x 다음의 부동소수점 값을 반환합니다 |
|
math.ulp() 가 추가되었습니다: float의 최하위 비트 값을 반환합니다 |
|
Linux 전용 os.pidfd_open() 및 os.P_PIDFD 가 노출되었습니다 |
|
os.unsetenv() 함수가 이제 Windows에서도 사용 가능합니다 |
완료 |
os.putenv() 및 os.unsetenv() 함수가 이제 항상 사용 가능합니다 |
완료 |
os.waitstatus_to_exitcode() 함수가 추가되었습니다: 대기 상태를 종료 코드로 변환합니다 |
|
새로운 random.Random.randbytes 메서드가 추가되었습니다: 임의 바이트를 생성합니다 |
|
새로운 sys.platlibdir 속성이 추가되었습니다: 플랫폼별 라이브러리 디렉터리의 이름 |
|
이전에는 sys.stderr 가 비대화형일 때 블록 버퍼링되었습니다. 이제 stderr은 기본적으로 항상 라인 버퍼링됩니다 |
|
참고