Python 3.6¶
Python 3.6 beta 1은 2016년 9월 12일에 출시되었으며, 새로운 기능 요약은 다음에서 확인할 수 있습니다:
새로운 구문 기능 |
상태 |
|
리터럴 문자열 포매팅 |
완료 |
|
숫자 리터럴의 밑줄 |
완료 |
|
비동기 제너레이터 |
||
변수 어노테이션 구문(잠정) |
완료 |
|
비동기 컴프리헨션 |
||
새로운 내장 기능 |
||
함수에서 kwargs 의 순서 보존 |
||
클래스 생성의 단순화된 커스터마이징 |
부분 구현 [1] |
|
클래스 속성 정의 순서 보존 |
||
표준 라이브러리 변경 사항 |
||
로컬 시간 모호성 해소 |
||
표준 라이브러리에 secrets 모듈 추가 |
||
파일 시스템 경로 프로토콜 추가 |
||
CPython 내부 구조 |
||
dict에 프라이빗 버전 추가 |
하지 않음 |
|
CPython에 프레임 평가 API 추가 |
||
Linux/Windows 변경 사항 |
||
Linux에서 |
||
Windows 콘솔 인코딩을 UTF-8로 변경 |
||
Windows 파일 시스템 인코딩을 UTF-8로 변경 |
||
기타 언어 변경 사항:
global 또는 nonlocal 문은 이제 동일한 스코프에서 해당 이름이 처음 사용되기 전에 텍스트상으로 나타나야 합니다. 이전에는 SyntaxWarning이었습니다. |
|
이제 특수 메서드를 None으로 설정하여 해당 연산을 사용할 수 없음을 나타낼 수 있습니다. 예를 들어, 클래스가 __iter__() 를 None 으로 설정하면 그 클래스는 반복 가능하지 않습니다. |
|
반복되는 트레이스백 줄이 길게 이어질 경우 이제 [Previous line repeated {count} more times] 로 축약됩니다 |
|
import는 모듈을 찾을 수 없을 때 이제 새로운 예외 ModuleNotFoundError 를 발생시킵니다. 현재 (try-except에서) ImportError를 검사하는 코드는 계속 작동합니다. |
|
인자가 없는 super() 에 의존하는 클래스 메서드는 이제 클래스 생성 중 메타클래스 메서드에서 호출될 때 올바르게 작동합니다. |
내장 모듈 변경 사항:
소진된 array.array 의 이터레이터는 이제 반복 대상 배열이 확장되더라도 소진된 상태로 유지됩니다. |
|
b2a_base64() 함수는 이제 반환 값에 개행 문자를 추가할지 여부를 제어하는 선택적 newline 키워드 인자를 받습니다 |
완료 |
새로운 cmath.tau (τ) 상수가 추가되었습니다 |
|
새로운 상수: math.inf 및 math.nan 과 일치하는 cmath.inf 및 cmath.nan , 그리고 complex repr에서 사용하는 형식과 일치하는 cmath.infj 및 cmath.nanj 도 추가되었습니다 |
|
크기를 가진 반복 가능 컨테이너 클래스를 나타내는 새로운 Collection 추상 기반 클래스가 추가되었습니다 |
|
새로운 Reversible 추상 기반 클래스는 __reversed__() 메서드도 제공하는 반복 가능 클래스를 나타냅니다. |
|
새로운 AsyncGenerator 추상 기반 클래스는 비동기 제너레이터를 나타냅니다. |
|
namedtuple() 함수는 이제 선택적 키워드 인자 module을 받으며, 지정된 경우 반환되는 명명된 튜플 클래스의 __module__ 속성에 사용됩니다. |
|
namedtuple() 의 verbose 및 rename 인자는 이제 키워드 전용입니다. |
|
재귀적인 collections.deque 인스턴스를 이제 피클링할 수 있습니다. |
|
BLAKE2 해시 함수가 모듈에 추가되었습니다. blake2b() 및 blake2s() 는 항상 사용 가능하며 BLAKE2의 전체 기능 집합을 지원합니다. |
|
SHA-3 해시 함수 sha3_224(), sha3_256(), sha3_384(), sha3_512() 와 SHAKE 해시 함수 shake_128() 및 shake_256() 이 추가되었습니다. |
|
비밀번호 기반 키 유도 함수 scrypt() 가 이제 OpenSSL 1.1.0 이상에서 사용 가능합니다. |
|
json.load() 및 json.loads() 는 이제 바이너리 입력을 지원합니다. 인코딩된 JSON은 UTF-8, UTF-16 또는 UTF-32 중 하나로 표현되어야 합니다. |
|
새로운 math.tau (τ) 상수가 추가되었습니다 |
완료 |
새로운 close() 메서드를 사용하여 scandir() 이터레이터를 명시적으로 닫을 수 있습니다. scandir() 이터레이터는 이제 컨텍스트 관리자 프로토콜을 지원합니다. |
|
Linux에서 os.urandom() 은 이제 보안 강화를 위해 시스템 urandom 엔트로피 풀이 초기화될 때까지 블로킹됩니다. |
|
Linux의 getrandom() 시스템 콜(임의 바이트 가져오기)이 이제 새로운 os.getrandom() 함수로 노출됩니다. |
|
정규 표현식에서 수식어 범위(modifier span) 지원이 추가되었습니다. 예: ‘(?i:p)ython’ 은 ‘python’과 ‘Python’에는 일치하지만 ‘PYTHON’에는 일치하지 않습니다; ‘(?i)g(?-i:v)r’ 은 ‘GvR’ 및 ‘gvr’ 에는 일치하지만 ‘GVR’ 에는 일치하지 않습니다. |
|
매치 객체 그룹은 group() 과 동등한 __getitem__ 을 통해 접근할 수 있습니다. 따라서 mo[‘name’] 은 이제 mo.group(‘name’) 과 동등합니다. |
|
매치 객체는 이제 인덱스 형식의 객체를 그룹 인덱스로 지원합니다. |
|
ioctl() 함수는 이제 SIO_LOOPBACK_FAST_PATH 제어 코드를 지원합니다. |
|
getsockopt() 상수 SO_DOMAIN , SO_PROTOCOL, SO_PEERSEC , SO_PASSSEC 가 이제 지원됩니다. |
|
setsockopt() 은 이제 setsockopt(level, optname, None, optlen: int) 형식을 지원합니다. |
|
socket 모듈은 이제 Linux 커널 crypto API와 인터페이스하기 위한 주소 패밀리 AF_ALG 를 지원합니다. ALG_, SOL_ALG 및 sendmsg_afalg() 가 추가되었습니다. |
|
새로운 Linux 상수 TCP_USER_TIMEOUT 및 TCP_CONGESTION 이 추가되었습니다. |
|
ssl은 OpenSSL 1.1.0을 지원합니다. 최소 권장 버전은 1.0.2입니다. |
|
기본 암호 모음에서 3DES가 제거되었으며 ChaCha20 Poly1305 암호 모음이 추가되었습니다. |
|
SSLContext 는 옵션과 암호에 대해 더 나은 기본 구성을 갖습니다. |
|
새로운 SSLSession 클래스를 사용하여 한 클라이언트 측 연결의 SSL 세션을 다른 연결로 복사할 수 있습니다. TLS 세션 재개는 초기 핸드셰이크 속도를 높이고 지연 시간을 줄이며 성능을 개선할 수 있습니다. |
|
새로운 get_ciphers() 메서드를 사용하여 암호 우선순위 순으로 활성화된 암호 목록을 가져올 수 있습니다. |
|
모든 상수와 플래그가 IntEnum 및 IntFlags 로 변환되었습니다. |
|
SSLContext 에 대한 서버 및 클라이언트 측 전용 TLS 프로토콜이 추가되었습니다. |
|
TLS 1.3 핸드셰이크 후 인증을 활성화하기 위한 SSLContext.post_handshake_auth 와 이를 시작하기 위한 ssl.SSLSocket.verify_client_post_handshake() 가 추가되었습니다. |
|
이제 ‘e’ 형식 지정자를 통해 IEEE 754 반정밀도 부동소수점을 지원합니다. |
|
새로운 getfilesystemencodeerrors() 함수는 유니코드 파일명과 바이트 파일명 간 변환에 사용되는 오류 모드의 이름을 반환합니다. |
|
compress() 및 decompress() 함수는 이제 키워드 인자를 받습니다 |
|
참고