Python 3.6¶
Python 3.6 beta 1 został wydany 12 września 2016 r., a podsumowanie nowych funkcji można znaleźć tutaj:
Nowe funkcje składni |
Status |
|
Formatowanie literałów napisowych |
Ukończone |
|
Podkreślenia w literałach liczbowych |
Ukończone |
|
Asynchroniczne generatory |
||
Składnia adnotacji zmiennych (wstępna) |
Ukończone |
|
Asynchroniczne wyrażenia listowe |
||
Nowe funkcje wbudowane |
||
Zachowanie kolejności kwargs w funkcji |
||
Prostsze dostosowywanie tworzenia klas |
Częściowe [1] |
|
Zachowanie kolejności definicji atrybutów klasy |
||
Zmiany w bibliotece standardowej |
||
Ujednoznacznienie czasu lokalnego |
||
Dodanie modułu secrets do biblioteki standardowej |
||
Dodanie protokołu ścieżek systemu plików |
||
Wnętrze CPython |
||
Dodanie prywatnej wersji do dict |
Nie zostanie wykonane |
|
Dodanie API ewaluacji ramki do CPython |
||
Zmiany dla Linux/Windows |
||
Uczynienie |
||
Zmiana kodowania konsoli Windows na UTF-8 |
||
Zmiana kodowania systemu plików Windows na UTF-8 |
||
Inne zmiany w języku:
Instrukcja global lub nonlocal musi teraz tekstowo wystąpić przed pierwszym użyciem dotkniętej nazwy w tym samym zakresie. Wcześniej było to SyntaxWarning. |
|
Można teraz ustawić metodę specjalną na None, aby wskazać, że odpowiadająca jej operacja nie jest dostępna. Na przykład jeśli klasa ustawia __iter__() na None, klasa nie jest iterowalna. |
|
Długie sekwencje powtarzających się linii śladu wywołań są teraz skracane jako [Previous line repeated {count} more times] |
|
Import zgłasza teraz nowy wyjątek ModuleNotFoundError, gdy nie może znaleźć modułu. Kod, który obecnie sprawdza ImportError (w try-except), nadal będzie działał. |
|
Metody klasowe polegające na super() bez argumentów będą teraz działać poprawnie, gdy są wywoływane z metod metaklasy podczas tworzenia klasy. |
Zmiany w modułach wbudowanych:
Wyczerpane iteratory array.array pozostaną teraz wyczerpane, nawet jeśli iterowana tablica zostanie rozszerzona. |
|
Funkcja b2a_base64() akceptuje teraz opcjonalny argument słowa kluczowego newline kontrolujący, czy znak nowej linii jest dołączany do zwracanej wartości |
Ukończone |
Dodano nową stałą cmath.tau (τ) |
|
Nowe stałe: cmath.inf i cmath.nan odpowiadające math.inf i math.nan, a także cmath.infj i cmath.nanj odpowiadające formatowi używanemu przez repr liczb zespolonych |
|
Dodano nową abstrakcyjną klasę bazową Collection reprezentującą iterowalne klasy kontenerów o określonym rozmiarze |
|
Nowa abstrakcyjna klasa bazowa Reversible reprezentuje klasy iterowalne, które udostępniają także metodę __reversed__(). |
|
Nowa abstrakcyjna klasa bazowa AsyncGenerator reprezentuje generatory asynchroniczne. |
|
Funkcja namedtuple() akceptuje teraz opcjonalny argument słowa kluczowego module, który, gdy jest określony, jest używany dla atrybutu __module__ zwracanej klasy nazwanej krotki. |
|
Argumenty verbose i rename funkcji namedtuple() są teraz dostępne tylko jako słowa kluczowe. |
|
Rekurencyjne instancje collections.deque mogą być teraz piklowane. |
|
Do modułu dodano funkcje skrótu BLAKE2. blake2b() i blake2s() są zawsze dostępne i obsługują pełny zestaw funkcji BLAKE2. |
|
Dodano funkcje skrótu SHA-3 sha3_224(), sha3_256(), sha3_384(), sha3_512() oraz funkcje skrótu SHAKE shake_128() i shake_256(). |
|
Funkcja wyprowadzania klucza na podstawie hasła scrypt() jest teraz dostępna z OpenSSL 1.1.0 i nowszymi. |
|
json.load() i json.loads() obsługują teraz dane wejściowe w postaci binarnej. Zakodowany JSON powinien być reprezentowany przy użyciu UTF-8, UTF-16 lub UTF-32. |
|
Dodano nową stałą math.tau (τ) |
Ukończone |
Nowa metoda close() pozwala jawnie zamknąć iterator scandir(). Iterator scandir() obsługuje teraz protokół menedżera kontekstu. |
|
W Linuksie os.urandom() blokuje teraz działanie, dopóki pula entropii urandom systemu nie zostanie zainicjowana, aby zwiększyć bezpieczeństwo. |
|
Wywołanie systemowe Linux getrandom() (pobierz losowe bajty) jest teraz udostępnione jako nowa funkcja os.getrandom(). |
|
Dodano obsługę zakresów modyfikatorów w wyrażeniach regularnych. Przykłady: «(?i:p)ython» pasuje do «python» i «Python», ale nie do «PYTHON»; «(?i)g(?-i:v)r» pasuje do «GvR» i «gvr», ale nie do «GVR». |
|
Grupy obiektu dopasowania mogą być dostępne przez __getitem__, co jest równoważne group(). Tak więc mo[«name»] jest teraz równoważne mo.group(«name»). |
|
Obiekty dopasowania obsługują teraz obiekty przypominające indeksy jako indeksy grup. |
|
Funkcja ioctl() obsługuje teraz kod sterujący SIO_LOOPBACK_FAST_PATH. |
|
Stałe getsockopt() SO_DOMAIN, SO_PROTOCOL, SO_PEERSEC i SO_PASSSEC są teraz obsługiwane. |
|
setsockopt() obsługuje teraz formę setsockopt(level, optname, None, optlen: int). |
|
Moduł socket obsługuje teraz rodzinę adresów AF_ALG do współpracy z API kryptograficznym jądra Linux. Dodano ALG_, SOL_ALG i sendmsg_afalg(). |
|
Dodano nowe stałe Linuksa TCP_USER_TIMEOUT i TCP_CONGESTION. |
|
ssl obsługuje OpenSSL 1.1.0. Minimalną zalecaną wersją jest 1.0.2. |
|
3DES został usunięty z domyślnych zestawów szyfrów, a dodano zestawy szyfrów ChaCha20 Poly1305. |
|
SSLContext ma teraz lepszą domyślną konfigurację opcji i szyfrów. |
|
Sesję SSL można skopiować z jednego połączenia po stronie klienta do innego za pomocą nowej klasy SSLSession. Wznowienie sesji TLS może przyspieszyć początkowe uzgadnianie, zmniejszyć opóźnienie i poprawić wydajność. |
|
Nowa metoda get_ciphers() może być użyta do uzyskania listy włączonych szyfrów w kolejności ich priorytetu. |
|
Wszystkie stałe i flagi zostały przekonwertowane na IntEnum i IntFlags. |
|
Dodano specyficzne dla serwera i klienta protokoły TLS dla SSLContext. |
|
Dodano SSLContext.post_handshake_auth w celu włączenia oraz ssl.SSLSocket.verify_client_post_handshake() w celu zainicjowania uwierzytelniania po uzgadnianiu w TLS 1.3. |
|
obsługuje teraz liczby zmiennoprzecinkowe IEEE 754 o połowicznej precyzji za pomocą specyfikatora formatu «e». |
|
Nowa funkcja getfilesystemencodeerrors() zwraca nazwę trybu błędów używanego do konwersji między nazwami plików w Unicode a nazwami plików w bajtach. |
|
Funkcje compress() i decompress() akceptują teraz argumenty słów kluczowych |
|
Uwagi