Python 3.5

Poniżej znajduje się lista sfinalizowanych/zaakceptowanych dokumentów PEP dla Pythona 3.5, pogrupowanych według ich wpływu na MicroPython.

Rozszerzenia składni

Status

PEP 448

Dodatkowe uogólnienia rozpakowywania

Częściowo

PEP 465

Nowy operator mnożenia macierzy

Pełne

PEP 492

Korutyny ze składnią async i await

Pełne

Rozszerzenia i zmiany w środowisku wykonawczym

PEP 461

Formatowanie % dla łańcuchów binarnych

Pełne

PEP 475

Ponawianie wywołań systemowych zakończonych niepowodzeniem z EINTR

Pełne

PEP 479

Zmiana obsługi StopIteration wewnątrz generatorów

Pełne

Zmiany w bibliotece standardowej

PEP 471

os.scandir()

PEP 485

math.isclose(), funkcja do testowania przybliżonej równości

Pełne

Różne zmiany

PEP 441

Ulepszone wsparcie aplikacji zip w Pythonie

PEP 486

Uświadomienie programu Python Launcher o wirtualnych środowiskach

Nie dotyczy

PEP 484

Wskazówki dotyczące typów (tylko zalecenia)

Pełne [1]

PEP 488

Eliminacja plików PYO

Nie dotyczy

PEP 489

Przeprojektowanie ładowania modułów rozszerzeń

Inne zmiany w języku:

Dodano procedury obsługi błędów namereplace. Procedury obsługi błędów backslashreplace działają teraz z dekodowaniem i translacją.

Łańcuchy dokumentacyjne właściwości są teraz zapisywalne. Jest to szczególnie przydatne w przypadku łańcuchów dokumentacyjnych collections.namedtuple()

Cykliczne importy obejmujące importy względne są teraz obsługiwane.

Nowe moduły:

Zmiany w modułach wbudowanych:

collections

Klasa OrderedDict jest teraz zaimplementowana w języku C, co czyni ją od 4 do 100 razy szybszą.

Widoki OrderedDict.items() , OrderedDict.keys() , OrderedDict.values() obsługują teraz iterację reversed().

The deque class now defines index(), insert(), and copy(), and supports the + and * operators.

Łańcuchy dokumentacyjne tworzone przez namedtuple() można teraz aktualizować.

Klasa UserString implementuje teraz metody __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable() i maketrans(), aby odpowiadały odpowiednim metodom str.

heapq

Porównywanie elementów w merge() można teraz dostosować, przekazując funkcję klucza w nowym opcjonalnym argumencie nazwanym key, a nowy opcjonalny argument nazwany reverse może być użyty do odwrócenia porównywania elementów

io

Nowa metoda BufferedIOBase.readinto1(), która używa co najwyżej jednego wywołania metod RawIOBase.read() lub RawIOBase.readinto() leżącego u podstaw surowego strumienia

json

Dekoder JSON zgłasza teraz JSONDecodeError zamiast ValueError, aby zapewnić lepsze informacje kontekstowe o błędzie.

math

Do modułu math dodano dwie nowe stałe: inf i nan.

Pełne

Nowa funkcja isclose() zapewnia sposób testowania przybliżonej równości.

Dodano nową funkcję gcd(). Funkcja fractions.gcd() jest teraz wycofywana.

os

Dodano nową funkcję scandir() zwracającą iterator obiektów DirEntry.

Funkcja urandom() używa teraz wywołania systemowego getrandom() w systemie Linux 3.17 lub nowszym oraz getentropy() w systemie OpenBSD 5.6 i nowszym, eliminując potrzebę używania /dev/urandom i unikając niepowodzeń spowodowanych potencjalnym wyczerpaniem deskryptorów plików.

Nowe funkcje get_blocking() i set_blocking() umożliwiają pobieranie i ustawianie trybu blokowania deskryptora pliku (O_NONBLOCK.)

Pojawiła się nowa funkcja os.path.commonpath() zwracająca najdłuższą wspólną podścieżkę każdej przekazanej nazwy ścieżki

re

Odwołania i odwołania warunkowe do grup o stałej długości są teraz dozwolone w asercjach wstecznego wyszukiwania

Liczba grup przechwytujących w wyrażeniach regularnych nie jest już ograniczona do 100.

Funkcje sub() i subn() zastępują teraz niedopasowane grupy pustymi łańcuchami zamiast zgłaszać wyjątek.

Wyjątki re.error mają nowe atrybuty: msg, pattern, pos, lineno i colno, które zapewniają lepsze informacje kontekstowe o błędzie

socket

Funkcje z limitami czasu używają teraz zegara monotonicznego zamiast zegara systemowego.

Nowa metoda socket.sendfile() umożliwia wysłanie pliku przez gniazdo za pomocą wysokowydajnej funkcji os.sendfile() w systemach UNIX, dzięki czemu przesyłanie jest od 2 do 3 razy szybsze niż przy użyciu zwykłego socket.send()

Metoda socket.sendall() nie resetuje już limitu czasu gniazda za każdym razem, gdy bajty są odbierane lub wysyłane. Limit czasu gniazda jest teraz maksymalnym całkowitym czasem trwania wysyłania wszystkich danych.

Argument backlog metody socket.listen() jest teraz opcjonalny. Domyślnie jest ustawiony na SOMAXCONN lub na 128, w zależności od tego, która wartość jest mniejsza.

Pełne

ssl

Wsparcie Memory BIO

Wsparcie negocjacji protokołu warstwy aplikacji

Pojawiła się nowa metoda SSLSocket.version() do odpytywania o faktycznie używaną wersję protokołu.

Klasa SSLSocket implementuje teraz metodę SSLSocket.sendfile().

Metoda SSLSocket.send() zgłasza teraz wyjątek ssl.SSLWantReadError lub ssl.SSLWantWriteError na gnieździe nieblokującym, jeśli operacja zostałaby zablokowana. Wcześniej zwracała 0.

Funkcja cert_time_to_seconds() interpretuje teraz czas wejściowy jako UTC, a nie jako czas lokalny, zgodnie z RFC 5280. Dodatkowo wartość zwracana jest zawsze liczbą całkowitą.

Nowe metody SSLObject.shared_ciphers() i SSLSocket.shared_ciphers() zwracają listę szyfrów wysłanych przez klienta podczas nawiązywania połączenia.

Metody SSLSocket.do_handshake(), SSLSocket.read(), SSLSocket.shutdown() i SSLSocket.write() klasy SSLSocket nie resetują już limitu czasu gniazda za każdym razem, gdy bajty są odbierane lub wysyłane.

Funkcja match_hostname() obsługuje teraz dopasowywanie adresów IP.

sys

Nowa funkcja set_coroutine_wrapper() umożliwia ustawienie globalnego punktu zaczepienia, który będzie wywoływany za każdym razem, gdy obiekt korutyny zostanie utworzony przez funkcję async def. Odpowiadająca jej funkcja get_coroutine_wrapper() może być użyta do uzyskania aktualnie ustawionego opakowania.

Nowa funkcja is_finalizing() może być użyta do sprawdzenia, czy interpreter Pythona jest w trakcie zamykania.

time

Funkcja monotonic() jest teraz zawsze dostępna

Uwagi