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