Programování

Python 3.9: Co je nového a lepšího

Python 3.9, který byl dnes vydán, přináší významné změny jak ve vlastnostech jazyka, tak ve vývoji jazyka. Python má v posledních letech popularitu a jeho použití explodovalo v rychle se rozvíjejících oblastech, jako je datová věda a strojové učení. Projekt tvrdě pracuje, aby držel krok se všemi novými požadavky.

Zde je přehled všech velkých nových funkcí v Pythonu 3.9.

Python přepne na roční cyklus vydání

Až do tohoto okamžiku byl Python vyvíjen a vydáván s osmnáctiměsíční kadencí. PEP 602 navrhl, aby vývojový tým Pythonu přijal roční cyklus vydání a tento návrh byl přijat.

Roční cyklus vydání znamená méně funkcí na vydání, ale také to znamená rychlejší zpětnou vazbu o testování funkcí, méně potenciálně zlomových změn pro každé vydání, a tedy větší motivaci pro uživatele a manažery distribuce Linuxu k častější aktualizaci Pythonu. Znamená to také, že nové funkce navržené v pozdním vývojovém cyklu nebudou trvat tak dlouho, než budou zavedeny do nového vydání.

Nová časová osa znamená, že Python 3.9 bude dodáván v říjnu 2020. Python 3.10 oficiálně zahájil vývoj pre-alfa 19. května 2020, vstoupí do fáze vývoje alfa, když bude dodáván Python 3.9, a bude dodáván v říjnu 2021. Budoucí vydání Pythonu budou následovat stejný vzor.

Ve výchozím nastavení se Python zrychluje

Každá revize Pythonu má oproti předchozí verzi vylepšení výkonu. Python 3.9 přináší dvě velká vylepšení, která zvyšují výkon bez nutnosti jakýchkoli změn stávajícího kódu.

První vylepšení zahrnuje větší využití vektorové volání protokol zavedený v Pythonu 3.8. vektorové volání zrychluje mnoho běžných volání funkcí minimalizací nebo eliminací dočasných objektů vytvořených pro volání. V Pythonu 3.9, několik vestavěných modulů Pythonu - rozsah, n-tice, sada, frozenset, seznam, diktát - použití vektorové volání interně k urychlení provádění.

Druhým velkým vylepšovačem výkonu je efektivnější analýza zdrojového kódu Pythonu. Nový analyzátor běhového modulu CPython nebyl navržen tak, aby řešil problémy s výkonem, ale spíše aby se vypořádal s interními nekonzistencemi v původním analyzátoru. Důležitou výhodou okrajové části je však rychlejší analýza, zejména u velkých objemů kódu.

Více funkcí řetězce a slovníku Pythonu

Python usnadňuje manipulaci s běžnými datovými typy a Python 3.9 rozšiřuje tuto jednoduchost o nové funkce pro řetězce a slovníky. U řetězců existují nové metody odstraňování předpon a přípon, operace, které již dlouho vyžadovaly hodně ruční práce. U slovníků nyní existují sjednocovací operátoři, jeden ke sloučení dvou slovníků do nového slovníku a jeden k aktualizaci obsahu jednoho slovníku s jiným slovníkem.

Dekoratéři ztrácejí určitá omezení

Dekorátoři vám umožňují zabalit funkce Pythonu a programově tak změnit jejich chování. Dříve se dekoratéři mohli skládat pouze ze symbolu @, jména (např. func) nebo tečkované jméno (func.method) a volitelně jeden hovor (func.method (arg1, arg2)). S Pythonem 3.9 se dekoratéři mohou nyní skládat z jakéhokoli platného výrazu.

Jedním z dlouhotrvajících způsobů, jak toto omezení obejít, bylo vytvoření funkce nebo výrazu lambda, který by při použití jako dekorátoru znamenal složitější výraz. Nyní udělá jakýkoli výraz, pokud získá něco, co může fungovat jako dekorátor.

Nové operace typu Python

V posledních několika verzích Python rozšířil podporu pro tipování typů. To je hlavně kvůli linterům a kontrolám kódu; typy se za běhu v CPythonu nevynucují a neexistují žádné plány, jak z Pythonu udělat staticky zadaný jazyk. Tipování typu je ale mocný nástroj k zajištění konzistence ve velkých databázích kódů, takže kód Pythonu může stále těžit z toho, že má tipy na typ.

Do Pythonu 3.9 se dostaly dvě nové funkce pro tipování a anotace typů. V jednom zadejte tipy pro obsah sbírek - např. Seznamy a slovníky - jsou nyní v Pythonu k dispozici nativně. To znamená, že můžete například popsat seznam jako seznam [int] - seznam celých čísel - bez nutnosti psaní na stroji knihovna na to.

Druhým přírůstkem mechanismů psaní v Pythonu jsou flexibilní funkce a variabilní anotace. To umožňuje použití Anotováno typ k popisu typu pomocí metadat, která mohou být prozkoumána předem (pomocí nástrojů pro vykreslování) nebo za běhu. Například, Anotováno [int, ctype ("char")] lze použít k popisu celého čísla, které by mělo být považováno za char zadejte do C. Ve výchozím nastavení by Python s takovou anotací nic neudělal, ale mohli by ji použít linters kódu.

Vylepšení interních prvků Pythonu

Vyčištění, rafinace a modernizace vnitřních prostor Pythonu je neustálá iniciativa pro vývojáře Pythonu a Python 3.9 má v tomto směru několik změn.

Prvním z nich je redesign způsobu interakce modulů s importním strojním zařízením. Rozšiřující moduly Pythonu, napsané v jazyce C, nyní mohou používat nový mechanismus načítání, díky kterému se při importu chovají spíše jako běžné moduly Pythonu. Několik modulů ve standardní knihovně Pythonu toto chování nově podporuje: _abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operátor, zdroj, čas, _weakref. Nový mechanismus načítání umožňuje nejen flexibilnější zpracování rozšiřujících modulů v Pythonu, ale také umožňuje nové funkce, jako je pokročilé chování při hákování.

Druhou iniciativou čištění je stabilní interní ABI pro CPython, u kterého je zaručeno, že vydrží po celou dobu životnosti Pythonu 3. Historicky byla každá hlavní revize Pythonu nekompatibilní s ABI s předchozími verzemi, což vyžaduje překompilování rozšiřujících modulů pro každou novou verzi. Od této chvíle budou všechny rozšiřující moduly, které používají stabilní ABI, fungovat ve verzích Pythonu. V Pythonu 3.9 používají následující moduly ve standardní knihovně stabilní ABI: audioop, ast, grp, _hashlib, pwd, _posixsubprocess, náhodný, výběr, struktura, termio, zlib.

Další změny v Pythonu 3.9

  • Standardní knihovna Pythonu nyní podporuje databázi časových pásem IANA. Uvedená databáze je dobře udržovaná a široce používaná a přímý způsob jejího použití v knihovně datetime v Pythonu bude velkým, časově úsporným.
  • Nové metody řetězců umožňují snadné odstranění předpon a přípon. Toto je jeden z těch běžných scénářů každodenního používání, které vyžadovaly trochu příliš často, než se zdálo nutné. Nové .removeprefix () a .removesuffix () metody vrací upravenou kopii řetězce minus příslušnou předponu nebo příponu, pokud v řetězci existují.

Jak udělat víc s Pythonem

  • 4 kontroly typu Pythonu, aby byl váš kód čistý
  • Styl Pythonu: 5 nástrojů k vyčištění kódu Pythonu
  • Jak pracovat s datovým typem seznamu Python
  • Jak zabalit aplikace v Pythonu s Aktovkou BeeWare
  • Jak spustit Anacondu bok po boku s ostatními Pythony
  • Jak používat datové třídy Pythonu
  • Začněte s asynchronizací v Pythonu
  • Jak používat asyncio v Pythonu
  • 3 kroky k generální opravě asynchronního prostředí Pythonu
  • Jak používat PyInstaller k vytvoření spustitelných souborů Pythonu
  • Výukový program pro Cython: Jak zrychlit Python
  • Jak chytře nainstalovat Python
  • Jak spravovat projekty v Pythonu pomocí Poetry
  • Jak spravovat projekty Pythonu pomocí Pipenv
  • Virtualenv a venv: Vysvětlení virtuálních prostředí Pythonu
  • Python virtualenv a venv dělá a nedělá
  • Vysvětlení vláken a podprocesů v Pythonu
  • Jak používat debugger Pythonu
  • Jak používat timeit k profilování kódu Pythonu
  • Jak používat cProfile k profilování kódu Pythonu
  • Jak převést Python na JavaScript (a zpět)
$config[zx-auto] not found$config[zx-overlay] not found