paráda :-) Petr Prikryl napsal(a): > ...narychlo druhá část (tady už to dělám trochu pečlivěji, > než první část). Základní informace jsem slepil z obsahu > prezentovaných slajdů. Zkoušel jsem to opsat přesně, ale > slajdy přes video nejsou nejlépe čitelné, takže tam můžou > být chyby například v číslech PEP. Do hranatých závorek > dávám vlastní poznámky. > > Zdroj (10.3.2006): "Google New York's Technical Speaker Series." > > Guido van Rossum přednáší v prostorách firmy Google ve > středu 22. února 2006. > > http://video.google.com/videoplay?docid=60331183357868340 > > > Python 2.5 > ========== > - alfa verze v květnu, release v září > * alfa 1: 6. května 2006 > * alfa 2: 3. června 2006 > * alfa 3: 1. července 2006 > * beta 1: 29. července 2006 > * beta 2: 26. srpna 2006 > * rc 1: 16. září 2006 > * finální verze: 30. září 2006 > Může se to dokonce ještě urychlit. > > - větev 2.4 taky není zatím mrtvá > * 2.4.3 bude uvolněna před 2.5a1 > * 2.4.4 zhruba jako finální 2.5 > > Co tam bude nového > ================== > - Jazyk > * absolutní/relativní import (PEP 328) > * podmíněné výrazy (*PEP 308) > * try/except/finally znovu spojenci (PEP 341) > * výrazy s yield a vylepšení generátorů (PEP 342) > * příkaz with (*PEP 343) > * revidované výjimky (*PEP 352) > * __index__ (*PEP 357) > > - Implementace > * AST překladač [Abstract Syntax Tree] > * velikost objektů bude vyjádřena typem ssize_t > místo int (PEP 353) > * vylepšení volby -m (*PEP 338) > > (*) [nečitelná poznámka] > > - Knihovna > * any()/all() > * ElementTree > * a další > > > Absolutní/relativní import > ========================== > > Někdy nastanou situace, kdy jméno interního modulu (uvnitř > balíčku, tedy podadresáře) koliduje s jménem standardního > modulu. Podle pravidel se nejdříve hledá interní modul, což > ale brání možnosti použití standardního modulu. > > Řešení spočívá v oddělení syntaxe pro absolutní a relativní > import. Nová syntaxe vede k zpětné nekompatibilitě, takže se > bude povolovat explicitně přes __future__. Příklady: > > import foo # hledá se JEN v sys.path > from . import foo # hledá se JEN v aktuálním balíku > from .. import foo # hledá se v rodičovském balíku > from .bar import foo # hledá se v balíku bar > from ..bar import foo # hledá se v sourozenci balíku bar [tomu moc nerozumím] > > atd. Povolen je libovolný počet úvodních teček. > > > Podmíněné výrazy > ================ > - Debatovalo se o tom před pár lety. Problematika znovu > otevřena. Používání obratu "PODMÍNKA and VÝRAZ1 or VÝRAZ2" > vede k chybám při VÝRAZ1 vyhodnocený jako False. > - GvR navrhuje "VÝRAZ1 if PODMÍNKA else VÝRAZ2" > - Odmítnuta celá řada alternativ. (C styl je považován za > příliš kryptický, přidávání dalších klíčových slov se také > nezvažuje.) > - Doporučuje se používat zřídka. Používání klasické > konstrukce if/else je často lepší. > > try/except/finally znovu spojenci > ================================= > > Momentálně nelze používat finally a except dohromady. GvR > měl kdysi potíže s implementací a současné použití se mu > jevilo v některých případech nejednoznačné. Java ukázala, že > tam žádná nejednoznačnost není. > > Kdysi dříve Python konstrukci > > try: > BLOK1 > except: > BLOK2 > finally: > BLOK3 > > ... umožňoval, ale tato možnost byla u novějších verzí > odstraněna. Po revizi bude tento syntaktický zápis znovu > povolen. > > > Vylepšení generátorů > ==================== > > Inspirace případy použití generátorů pro vstup/výstupní > operace. Inspirace jazykem Ruby. > > - yield může být použit jako výraz > - yield bez argumentu je totéž jako "yield None" > - g.send(hodnota) zašle generátoru hodnotu > - g.throw(výjimka) vyvolá výjimku [v kontextu použití yield] > - g.close() vyvolá GeneratorExit (a odchytí si ji) > - když se generátor dostane do pařátů garbage collectoru, > provede se close() > - yield [zatím] nelze použít uvnitř try/finally > > > with > ==== > > Netriviální záležitost, trocha magie; with jako blok, > správce kontextu (@contextmanager), zpracování výjimek. > > Mutex jako inspirace i jako první kandidát pro využití with. > > > Revidované výjimky > ================== > > - Standardní výjimky se stanou třídami nového typu. > - Nová kořenová třída: BaseException > * Stane se bázovou třídou pro KeyboardInterrupt a SystemExit. > (Existují dobré důvody, proč tyto dvě výjimky nemají mít > bázovou třídu Exception, ale právě BaseException.) > * Stane se bázobou třídou také pro Exception a vše pod > touto třídou. > - Ve verzích po 2.5 > * budou zakázány výjimky používající řetězce > * všechny výjimky musí dědit z BaseException > * Možná bude odstraněna holá forma příkazu "except:" > * Cíle bude možné dosáhnout až během několika meziverzí. > > __index__ > ========= > > Nový protokol: "Pokud objekt reprezentuje index v > nestandardní reprezentaci, pak __index__() převádí tuto > nestandardní reprezentaci na standardní integer". Motivace > pochází s oblasti numerických výpočtů. > > > Překladač založený na abstraktních syntaktických stromech > ========================================================= > > Týká se vlastností implementace, nikoliv vlastností jazyka. > > Téměř se ho podařilo vypustit už v souvislosti s 2.4, ale > nebyl doladěný a blížil se naplánovaný termín vypuštění > verze. > > * Co to je? > - zcela nový překladač bajtkódu > - používá ABSTRAKTNÍ syntaktické stromy místo KONKRÉTNÍCH > > * Proč? > - nový překladač se snadněji upravuje > (užitečnost se již prokázala při úpravách try/except/finally) > - ke strukturám AST lze přistupovat i s pythonovského kódu > To znamená, že lze přímo prostřednicvím pythonovského > kódu experimentovat z modifikacemi bajtkódu, pokusně > vytvářet nové varianty jazyka a podobně. > > > ssize_t > ======= > > Opět záležitost implementace. ssize_t odpovídá celočíselnému > znaménkovému typu, který zabírá stejný počet bajtů jako > ukazatel v jazyce C. To znamená, že například u 64bitového > kódu reprezentuje větší čísla, než typ long v jazyce C. > > > -m <package>.<module> > ===================== > > Přímé spuštění modulu v balíku. Využije se například při > spouštění regresních testů Pythonu, které jsou součástí jeho > zdrojových textů. > > > Novinky v knihovně 2.5 > ====================== > > * Nové zabudované funkce: any(), all() > * if any(x > 0 for x in S): ... > * if all(P(x) for x in S): ... > * Umožňují používat generátorové výrazy > - ale pracují s libovolnými iterátory a iterable > * Sémantika zkrácených výrazů (jako u and/or operátorů) > - Zastaví při prvním nevyhovujícím případu, > - ale nevyhovující případ není zpřístupněn, [protože] > - vedlo by to k mnoha podivnostem... > * all() by muselo vracet True nebo případ, který vede > k false. > > * Nové moduly: > - funkcional: partial() > - hashlib: MD-5, SHA-1, -224, -256, -384, -512 > - cProfile: lepší profiler, rychlejší, menší režie > - [c]ElementTree: lepší XML API > * Fredrik Lundh, třetí strana > * ElementTree implementován v Pythonu > * cElementTree je rychlejší > * from xmlcore.etree import ElementTree > > * Doufejme, že také: > - ctypes: volání libovolného C kódu z DLL nebo sdílené > knihovny (sharelib) > - wstiref [?]: infrastruktura pro standardní web framework > - setuptools: snadná správa balíků > - bdist_msi, bdist_deb?, bdist_egg???: pro distutils > > (konec) > > pepr > > Jan Suchý > >> Ahoj, tady je Guido naživo z konference Python in New York >> konané 22.2.2006. >> V prvním videu mluví o vzniku jazyka a cílech návrhu, v >> druhém podrobně >> o změnách, které budou ve verzi Pythonu 2.5 a 3.0, včetně >> předpokládaného data uvedení nové verze 2.5. >> tak si o užijte :-) >> >> http://video.google.com/videoplay?docid=-7758421725489622662 >> http://video.google.com/videoplay?docid=60331183357868340 >> > > Jan Suchý > >> Ahoj, tady je Guido naživo z konference Python in New York >> konané 22.2.2006. >> V prvním videu mluví o vzniku jazyka a cílech návrhu, v >> druhém podrobně >> o změnách, které budou ve verzi Pythonu 2.5 a 3.0, včetně >> předpokládaného data uvedení nové verze 2.5. >> tak si o užijte :-) >> >> http://video.google.com/videoplay?docid=-7758421725489622662 >> http://video.google.com/videoplay?docid=60331183357868340 >> > _______________________________________________ > Python mailing list > [email protected] > http://www.py.cz/mailman/listinfo/python > >
_______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
