Python 3.5

아래는 MicroPython에 미치는 영향에 따라 그룹화한 Python 3.5의 확정/승인된 PEP 목록입니다.

구문 확장

상태

PEP 448

추가적인 언패킹 일반화

부분적

PEP 465

새로운 행렬 곱셈 연산자

완료

PEP 492

asyncawait 구문을 사용한 코루틴

완료

런타임 확장 및 변경

PEP 461

바이너리 문자열에 대한 % 포매팅

완료

PEP 475

EINTR 로 실패한 시스템 콜 재시도

완료

PEP 479

제너레이터 내부의 StopIteration 처리 변경

완료

표준 라이브러리 변경 사항

PEP 471

os.scandir()

PEP 485

math.isclose(), 근사 동등성을 테스트하는 함수

완료

기타 변경 사항

PEP 441

Python zip 애플리케이션 지원 개선

PEP 486

Python 런처가 가상 환경을 인식하도록 함

해당 없음

PEP 484

타입 힌트(권고용)

완료 [1]

PEP 488

PYO 파일 제거

해당 없음

PEP 489

확장 모듈 로딩 재설계

기타 언어 변경 사항:

namereplace 오류 핸들러가 추가되었습니다. backslashreplace 오류 핸들러는 이제 디코딩 및 변환에서도 작동합니다.

프로퍼티 독스트링을 이제 쓸 수 있습니다. 이는 collections.namedtuple() 독스트링에 특히 유용합니다

상대 임포트를 포함하는 순환 임포트가 이제 지원됩니다.

새로운 모듈:

내장 모듈 변경 사항:

collections

OrderedDict 클래스가 이제 C로 구현되어 4배에서 100배 빨라졌습니다.

OrderedDict.items() , OrderedDict.keys() , OrderedDict.values() 뷰가 이제 reversed() 반복을 지원합니다.

deque 클래스는 이제 index(), insert(), copy() 를 정의하며 + 및 * 연산자를 지원합니다.

namedtuple()이 생성하는 독스트링을 이제 갱신할 수 있습니다.

UserString 클래스는 이제 str의 해당 메서드와 일치하도록 __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable(), maketrans() 메서드를 구현합니다.

heapq

merge() 의 요소 비교를 이제 새로운 선택적 key 키워드 인수에 key 함수를 전달하여 사용자 정의할 수 있으며, 새로운 선택적 reverse 키워드 인수를 사용하여 요소 비교를 역순으로 할 수 있습니다

io

기반 원시 스트림의 RawIOBase.read() 또는 RawIOBase.readinto() 메서드를 최대 한 번만 호출하는 새로운 BufferedIOBase.readinto1() 메서드

json

JSON 디코더는 오류에 대한 더 나은 컨텍스트 정보를 제공하기 위해 이제 ValueError 대신 JSONDecodeError를 발생시킵니다.

math

math 모듈에 두 개의 새로운 상수가 추가되었습니다: infnan.

완료

새로운 함수 isclose() 는 근사 동등성을 테스트하는 방법을 제공합니다.

새로운 gcd() 함수가 추가되었습니다. fractions.gcd() 함수는 이제 사용 중단되었습니다.

os

DirEntry 객체의 이터레이터를 반환하는 새로운 scandir() 함수가 추가되었습니다.

urandom() 함수는 이제 Linux 3.17 이상에서 getrandom() 시스템 콜을, OpenBSD 5.6 이상에서 getentropy() 를 사용하여, /dev/urandom을 사용할 필요를 없애고 잠재적인 파일 디스크립터 고갈로 인한 실패를 방지합니다.

새로운 get_blocking()set_blocking() 함수를 사용하면 파일 디스크립터의 블로킹 모드(O_NONBLOCK)를 가져오고 설정할 수 있습니다.

전달된 각 경로명의 가장 긴 공통 하위 경로를 반환하는 새로운 os.path.commonpath() 함수가 있습니다

re

고정 길이 그룹에 대한 참조 및 조건부 참조가 이제 후방 탐색(lookbehind) 단언에서 허용됩니다

정규 표현식의 캡처 그룹 수가 더 이상 100개로 제한되지 않습니다.

sub()subn() 함수는 이제 매칭되지 않은 그룹을 예외를 발생시키는 대신 빈 문자열로 대체합니다.

re.error 예외에는 오류에 대한 더 나은 컨텍스트 정보를 제공하는 새로운 속성인 msg, pattern, pos, lineno, colno가 추가되었습니다

socket

타임아웃이 있는 함수는 이제 시스템 클록 대신 단조 클록(monotonic clock)을 사용합니다.

새로운 socket.sendfile() 메서드를 사용하면 UNIX에서 고성능 os.sendfile() 함수를 사용하여 소켓을 통해 파일을 전송할 수 있으며, 그 결과 단순한 socket.send() 사용 대비 업로드가 2~3배 빨라집니다

socket.sendall() 메서드는 더 이상 바이트를 수신하거나 전송할 때마다 소켓 타임아웃을 재설정하지 않습니다. 이제 소켓 타임아웃은 모든 데이터를 전송하는 데 걸리는 최대 총 시간입니다.

socket.listen() 메서드의 backlog 인수가 이제 선택 사항입니다. 기본적으로 SOMAXCONN 또는 128 중 더 작은 값으로 설정됩니다.

완료

ssl

메모리 BIO 지원

애플리케이션 계층 프로토콜 협상(ALPN) 지원

사용 중인 실제 프로토콜 버전을 조회하는 새로운 SSLSocket.version() 메서드가 있습니다.

SSLSocket 클래스는 이제 SSLSocket.sendfile() 메서드를 구현합니다.

SSLSocket.send() 메서드는 이제 논블로킹 소켓에서 작업이 블로킹될 경우 ssl.SSLWantReadError 또는 ssl.SSLWantWriteError 예외를 발생시킵니다. 이전에는 0을 반환했습니다.

cert_time_to_seconds() 함수는 이제 RFC 5280에 따라 입력 시간을 로컬 시간이 아닌 UTC로 해석합니다. 또한 반환 값은 항상 int입니다.

새로운 SSLObject.shared_ciphers()SSLSocket.shared_ciphers() 메서드는 핸드셰이크 중 클라이언트가 보낸 암호 방식 목록을 반환합니다.

SSLSocket 클래스의 SSLSocket.do_handshake(), SSLSocket.read(), SSLSocket.shutdown(), SSLSocket.write() 메서드는 더 이상 바이트를 수신하거나 전송할 때마다 소켓 타임아웃을 재설정하지 않습니다.

match_hostname() 함수는 이제 IP 주소 매칭을 지원합니다.

sys

새로운 set_coroutine_wrapper() 함수를 사용하면 async def 함수에 의해 코루틴 객체가 생성될 때마다 호출될 전역 후크를 설정할 수 있습니다. 해당하는 get_coroutine_wrapper() 를 사용하여 현재 설정된 래퍼를 가져올 수 있습니다.

새로운 is_finalizing() 함수를 사용하여 Python 인터프리터가 종료 중인지 확인할 수 있습니다.

time

monotonic() 함수를 이제 항상 사용할 수 있습니다

참고