Python 3.6¶
Python 3.6 beta 1 byla vydána 12. září 2016 a souhrn nových funkcí lze nalézt zde:
Nové syntaktické funkce | Stav | |
Formátování literálových řetězců | Hotovo | |
Podtržítka v číselných literálech | Hotovo | |
Asynchronní generátory | ||
Syntaxe pro anotace proměnných (předběžné) | Hotovo | |
Asynchronní komprehenze | ||
Nové vestavěné funkce | ||
Zachování pořadí kwargs ve funkci | ||
Jednodušší přizpůsobení vytváření tříd | Částečně [1] | |
Zachování pořadí definic atributů třídy | ||
Změny ve standardní knihovně | ||
Rozlišení nejednoznačnosti místního času | ||
Přidání modulu secrets do standardní knihovny | ||
Přidání protokolu pro cesty v souborovém systému | ||
Vnitřnosti CPythonu | ||
Přidání privátní verze do dict | Nebude implementováno | |
Přidání API pro vyhodnocování rámců do CPythonu | ||
Změny v Linux/Windows | ||
Učinit | ||
Změna kódování konzole Windows na UTF-8 | ||
Změna kódování souborového systému Windows na UTF-8 | ||
Další změny v jazyce:
Příkaz global nebo nonlocal nyní musí v textu zdrojového kódu být uveden před prvním použitím dotčeného jména ve stejném rozsahu. Dříve se jednalo o SyntaxWarning. | |
Nyní je možné nastavit speciální metodu na None, čímž se signalizuje, že odpovídající operace není k dispozici. Pokud například třída nastaví __iter__() na None, není tato třída iterovatelná. | |
Dlouhé sekvence opakujících se řádků zpětného sledování (traceback) jsou nyní zkráceny jako [Previous line repeated {count} more times] | |
Import nyní vyvolává novou výjimku ModuleNotFoundError, když nedokáže najít modul. Kód, který v současnosti kontroluje ImportError (v try-except), bude i nadále fungovat. | |
Metody třídy spoléhající na super() bez argumentů nyní budou fungovat správně, když jsou volány z metod metatřídy během vytváření třídy. |
Změny ve vestavěných modulech:
Vyčerpané iterátory array.array nyní zůstanou vyčerpané, i když je iterované pole rozšířeno. | |
Funkce b2a_base64() nyní přijímá volitelný klíčový argument newline, kterým lze řídit, zda se k návratové hodnotě přidá znak nového řádku | Hotovo |
Byla přidána nová konstanta cmath.tau (τ) | |
Nové konstanty: cmath.inf a cmath.nan, aby odpovídaly math.inf a math.nan, a také cmath.infj a cmath.nanj, aby odpovídaly formátu používanému funkcí complex repr | |
Byla přidána nová abstraktní bázová třída Collection reprezentující iterovatelné kontejnerové třídy se známou velikostí | |
Nová abstraktní bázová třída Reversible reprezentuje iterovatelné třídy, které také poskytují metodu __reversed__(). | |
Nová abstraktní bázová třída AsyncGenerator reprezentuje asynchronní generátory. | |
Funkce namedtuple() nyní přijímá volitelný klíčový argument module, který se, je-li uveden, použije pro atribut __module__ vrácené třídy pojmenované n-tice. | |
Argumenty verbose a rename funkce namedtuple() nyní lze předávat pouze jako klíčové. | |
Rekurzivní instance collections.deque lze nyní serializovat pomocí pickle. | |
Do modulu byly přidány hashovací funkce BLAKE2. Funkce blake2b() a blake2s() jsou vždy dostupné a podporují plnou sadu funkcí BLAKE2. | |
Byly přidány hashovací funkce SHA-3 sha3_224(), sha3_256(), sha3_384(), sha3_512() a hashovací funkce SHAKE shake_128() a shake_256(). | |
Funkce odvození klíče na základě hesla scrypt() je nyní k dispozici s OpenSSL 1.1.0 a novějším. | |
Funkce json.load() a json.loads() nyní podporují binární vstup. Kódovaný JSON by měl být reprezentován pomocí UTF-8, UTF-16 nebo UTF-32. | |
Byla přidána nová konstanta math.tau (τ) | Hotovo |
Nová metoda close() umožňuje explicitně uzavřít iterátor scandir(). Iterátor scandir() nyní podporuje protokol kontextového správce. | |
Na Linuxu nyní os.urandom() blokuje, dokud není inicializován systémový fond entropie urandom, čímž se zvyšuje bezpečnost. | |
Linuxové systémové volání getrandom() (získání náhodných bajtů) je nyní vystaveno jako nová funkce os.getrandom(). | |
Byla přidána podpora rozsahů modifikátorů v regulárních výrazech. Příklady: ‚(?i:p)ython‘ odpovídá ‚python‘ a ‚Python‘, ale ne ‚PYTHON‘; ‚(?i)g(?-i:v)r‘ odpovídá ‚GvR‘ a ‚gvr‘, ale ne ‚GVR‘. | |
Skupiny objektu match lze nyní zpřístupnit pomocí __getitem__, což je ekvivalentní group(). Takže mo[‚name‘] je nyní ekvivalentní mo.group(‚name‘). | |
Objekty match nyní podporují objekty podobné indexu jako indexy skupin. | |
Funkce ioctl() nyní podporuje řídicí kód SIO_LOOPBACK_FAST_PATH. | |
Konstanty funkce getsockopt() SO_DOMAIN, SO_PROTOCOL, SO_PEERSEC a SO_PASSSEC jsou nyní podporovány. | |
Funkce setsockopt() nyní podporuje formu setsockopt(level, optname, None, optlen: int). | |
Modul socket nyní podporuje rodinu adres AF_ALG pro propojení s kryptografickým API jádra Linuxu. Byly přidány ALG_, SOL_ALG a sendmsg_afalg(). | |
Byly přidány nové linuxové konstanty TCP_USER_TIMEOUT a TCP_CONGESTION. | |
ssl podporuje OpenSSL 1.1.0. Minimální doporučená verze je 1.0.2. | |
3DES byl odstraněn z výchozích sad šifer a byly přidány sady šifer ChaCha20 Poly1305. | |
SSLContext má lepší výchozí konfiguraci pro volby a šifry. | |
SSL relaci lze nyní zkopírovat z jednoho klientského spojení do druhého pomocí nové třídy SSLSession. Obnovení relace TLS může urychlit počáteční handshake, snížit latenci a zlepšit výkon. | |
Novou metodu get_ciphers() lze použít k získání seznamu povolených šifer v pořadí priority šifer. | |
Všechny konstanty a příznaky byly převedeny na IntEnum a IntFlags. | |
Byly přidány TLS protokoly specifické pro server a klienta pro SSLContext. | |
Byly přidány SSLContext.post_handshake_auth pro povolení a ssl.SSLSocket.verify_client_post_handshake() pro zahájení autentizace TLS 1.3 po handshaku. | |
nyní podporuje čísla s plovoucí desetinnou čárkou poloviční přesnosti dle IEEE 754 prostřednictvím specifikátoru formátu ‚e‘. | |
Nová funkce getfilesystemencodeerrors() vrací název režimu chyb použitého k převodu mezi názvy souborů v Unicode a názvy souborů v bajtech. | |
Funkce compress() a decompress() nyní přijímají klíčové argumenty | |
Poznámky