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