abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 11:55 | Zajímavý software

    Vývojář Spytihněv, autor počítačové hry Hrot (Wikipedie, ProtonDB), pracuje na nové hře Brno Transit. Jedná se o příběhový psychologický horor o strojvedoucím v zácviku, uvězněném v nejzatuchlejším metru východně od všeho, na čem záleží. Vydání je plánováno na čtvrté čtvrtletí letošního roku.

    Ladislav Hagara | Komentářů: 10
    včera 18:22 | IT novinky

    V uplynulých dnech byla v depu Českých drah v Brně-Maloměřicích úspěšně dokončena zástavba speciální antény satelitního internetu Starlink od společnosti SpaceX do jednotky InterPanter 660 004 Českých drah. Zástavbu provedla Škoda Group. Cestující se s InterPanterem, vybaveným vysokorychlostním satelitním internetem, setkají například na linkách Svitava Brno – Česká Třebová – Praha nebo Moravan Brno – Břeclav – Přerov – Olomouc.

    Ladislav Hagara | Komentářů: 10
    včera 13:11 | Nová verze

    Byla vydána nová verze 8.7.0 správce sbírky fotografií digiKam (Wikipedie). Přehled novinek i s náhledy v oficiálním oznámení (NEWS). Nejnovější digiKam je ke stažení také jako balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo ke spuštění a spustit.

    Ladislav Hagara | Komentářů: 0
    včera 12:22 | IT novinky

    Před 30 lety, k 1. 7. 1995, byl v ČR liberalizován Internet - tehdejší Eurotel přišel o svou exkluzivitu a mohli začít vznikat první komerční poskytovatelé přístupu k Internetu [𝕏].

    Ladislav Hagara | Komentářů: 5
    včera 11:33 | Nová verze

    Byla vydána (𝕏) nová verze 7.4 open source monitorovacího systému Zabbix (Wikipedie). Přehled novinek v oznámení na webu, v poznámkách k vydání a v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    včera 05:44 | Bezpečnostní upozornění

    Balíček s příkazem sudo byl vydán ve verzi 1.9.17p1. Řešeny jsou zranitelnosti CVE-2025-32462 (lokální eskalace práv prostřednictvím volby host) a CVE-2025-32463 (lokální eskalace práv prostřednictvím volby chroot).

    Ladislav Hagara | Komentářů: 6
    včera 05:22 | IT novinky

    Do služeb Seznam.cz se lze nově přihlásit pomocí služby MojeID [𝕏].

    Ladislav Hagara | Komentářů: 5
    včera 03:33 | Bezpečnostní upozornění

    Bezpečnostní výzkumníci zveřejnili informace o osmi zranitelnostech, které postihují více než 700 modelů tiskáren, skenerů a štítkovačů značky Brother. Bezpečnostní upozornění vydali také další výrobci jako Fujifilm, Ricoh, Konica Minolta a Toshiba. Nejzávažnější zranitelnost CVE-2024-51978 umožňuje útočníkovi vzdáleně a bez přihlášení získat administrátorská oprávnění prostřednictvím výchozího hesla, které lze odvodit ze

    … více »
    Ladislav Hagara | Komentářů: 0
    30.6. 16:00 | Komunita

    Společnost Oracle vlastní ochrannou známku JAVASCRIPT. Komunita kolem programovacího jazyka JavaScript zastoupena společností Deno Land vede právní bitvu za její osvobození, viz petice a otevřený dopis na javascript.tm. Do 7. srpna se k nim má vyjádřit Oracle (USPTO TTAB).

    Ladislav Hagara | Komentářů: 6
    30.6. 13:11 | IT novinky

    Byl představen samostatný rádiový modul Raspberry Pi Radio Module 2 s Wi-Fi a Bluetooth.

    Ladislav Hagara | Komentářů: 6
    Jaký je váš oblíbený skriptovací jazyk?
     (59%)
     (28%)
     (7%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 338 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    Rozcestník

    Novinky v Python 2.5 - 3

    29. 12. 2006 | Michal Vyskočil | Programování | 4459×

    Před nějakým časem vyšla nová verze Pythonu. Pokud vás tento jazyk zajímá, pojďte si přečíst seznam změn, jako je nová hierarchie výjimek nebo třeba modul umožňující přímé volání knihovních funkcí z Pythonu.

    Výjimky v novém stylu

    Třídy výjimek mohou od nynějška být nového stylu (new-stylled, zavedeno v Pythonu 2.2) a ne klasické třídy, jako tomu bylo doposud. Současně s tím se všechny zabudované výjimky změnily na new-stylled. Rovněž došlo k přeskupení dědičností:

        BaseException       # Novinka v Pythonu 2.5
        |- KeyboardInterrupt
        |- SystemExit
        |- Exception
            |- (all other current built-in exceptions)
        

    To nyní lidem dovolí jednoduše zachytávat všechny výjimky, které ukazují na chybu v programu. Takové KeyboardInterrupt, nebo SystemExit nejsou chyby, přičemž je nutné je znovu vyvolat (jinak aplikace nepůjde shodit pomocí Ctlr+C, za což jistě dostaneme mnoho děkovných dopisů od spokojených uživatelů). Takže se muselo udělat něco jako:

        try:
            ...
        except (KeyboardInterrupt, SystemExit):
            raise
        except: 
            # Zalogování chyby ...  
            # Program pokračuje v běhu...
        

    Od nynějška stačí k dosažení stejného výsledku napsat except Exception. Python 3.0 by pak měl vyžadovat, aby byly všechny výjimky zděděny od BaseException nebo některého z jeho potomků. S tím souvisí i to, že řetězcové výjimky, které jsou dlouho označené jako deprecated, budou od nynějška generovat varování. Cílem je v některé z následujících verzí jejich podporu úplně odstranit.

    PEP 352, Required Superclass for Exceptions
    PEP sepsal Brett Cannon a Guido van Rossum; implementoval Brett Cannon.

    Nová speciální metoda __index__

    Vývojáři NumPy měli problém, který se dal vyřešit pouze přidáním další speciální metody __index__. Pokud používáme konstrukci [start:stop:step], hodnoty pro start, stop a step mohou být pouze celá nebo dlouhá celá čísla. NumPy definuje celou řadu specializovaných celočíselných typů, jako znaménkové a neznaménkové, 8, 16, 32 a 64 bitové, ale neexistoval způsob, jak je používat ve slice konstrukci.

    Není možné použít existující metodu __int__, protože ta byla použíta k převodu na typ int. Také by použití této metody mělo za následek skutečnost, že čísla s řádovou čárkou by se stala povolenými indexy, což je pochopitelně nežádoucí chování. Takže byla přidána nová speciální metoda __index__, která nemá žádné parametry a vrací celé číslo, které představuje index.

        class C:
            def __index__ (self):
                return self.value
        

    Podmínkou je, že návratová hodnota musí být integer nebo long integer. Pokud ne, dojde k výjimce TypeError.

    PEP 357, Allowing Any Object to be Used for Slicing
    PEP sepsal a implementoval Travis Oliphant

    Stručně o dalších změnách v jazyce

    Nová metoda slovníku __missing__

    Slovník dostal nový háček pro to, aby umožnil podtřídám vrátit nějakou výchozí hodnotu, pokud nebyl daný klíč nalezen. Pokud nebyl nalezen, je zavolána metoda __missing__(key). Tento háček implementuje nová třída dict v modulu collections. Následující příklad ukazuje definici slovníku, vracející nulu pro každou nenalezenou hodnotu:

    class zerodict (dict):
        def __missing__ (self, key):
            return 0
    
    >>> d = zerodict({1:1, 2:2})
    >>> print d[1], d[2]
    1 2
    >>> print d[3], d[4]
    0 0
        

    Metody řetězců partition() a rpartition()

    Jak 8bitové, tak Unicode řetězce mají dvě nové metody partition(sep) a rpartition(sep), které usnadňují některé často používané konstrukce. Metoda find(S) totiž často hledá index, který je použit pro vlastní rozdělení řetězce a získání částí před a za oddělovačem. Volání metody partition(sep) potom sloučí tyto dva kroky do jediného volání a vrací trojici (část před, oddělovač, část za). Pokud není oddělovač nalezen, celý řetězec je na prvním místě, zbylé dva jsou prázdné. Metoda rpartition(sep) také vrací trojici, ale prohledává řetězec od konce.

        >>> ('http://www.python.org').partition('://')
        ('http', '://', 'www.python.org')
        >>> ('file:/usr/share/doc/index.html').partition('://')
        ('file:/usr/share/doc/index.html', '', '')
        >>> (u'Subject: a quick question').partition(':')
        (u'Subject', u':', u' a quick question')
        >>> 'www.python.org'.rpartition('.')
        ('www.python', '.', 'org')
        >>> 'www.python.org'.rpartition(':')
        ('', '', 'www.python.org')
        >>> 'www.python.org'.partition('.')
        ('www', '.', 'python.org')
        >>> 'www.python.org'.rpartition('.')
        ('www.python', '.', 'org')
        

    (Implementoval Fredrik Lundh podle návrhů Raymonda Hettingera.)

    Vylepšení startswith() a endswith()

    Metody řetězců startswith() a endswith() mohou jako parametr mít i ntici

        def is_image_file (filename):
            return filename.endswith(('.gif', '.jpg', '.tiff'))
        

    (Implementoval Georg Brandl podle návrhů Toma Lynna.)

    Nový parametr funkcí min() a max()

    Zabudované funkce min() a max() mohou mít parametr key podobně jako řadící metoda sort(). Tím je funkce s jedním parametrem, která je volána pro každou hodnotu v seznamu. Funkce min()/max() vrací prvek s nejmenší/největší návratovou hodnotou této funkce.

    >>> L = ['medium', 'longest', 'short']
    >>> print max(L, key=len)
    longest
    >>> print max(L)
    short
    # Řetězec 'short' má lexikograficky největší hodnotu
    

    (Vložil Steven Bethard a Raymond Hettinger.)

    Nové zabudované funkce any() a all()

    Nové zabudované funkce any() a all(), vyhodnotí, zda iterátor obsahuje nějakou pravdivou nebo nepravdivou hodnotu. Funkce any() vrací True, pokud je nějaká hodnota vrácená iterátorem True. Funkce all() potom vrací True jen v případě, že všechny iterátory vrací True.

    (Navrhl Guido van Rossum, a implementoval Raymond Hettinger.)

    Hashe mohou být i dlouhé integery

    Výsledkem speciální metody __hash__() může být jak regulární integer, tak i jeho dlouhá varianta. V předchozích verzích mohlo být výsledkem této metody pouze standardní číslo, ale od nynější verze vrací zabudovaná funkce id() libovolné nenulové číslo, přičemž uživatelé často implementují metodu __hash__() jako return id(self).

    Výchozím kódováním je ASCII

    Pro všechny moduly je výchozím kódováním ASCII. Pokud bude modul obsahovat 8bitový literál a nebude mít explicitně deklarovaný typ, vyvolá se SyntaxError. V předchozí verzi to vyvolalo pouze varování. V PEP 263 je popis, jak deklarovat kódování. Pro latin1 stačí napsat na začátek zdrojového kódu:

    # -*- coding: latin1 -*-
     

    Nové varování UnicodeWarning

    Nové varování UnicodeWarning, které je vyvoláno v případě, že porovnáváte Unicode řetězec s 8bitovým, který není možné zkonvertovat do Unicode použitím výchozího ASCII kódování. Výsledek porovnání je False:

    >>> chr(128) == unichr(128)   # Nelze konvertovat chr(128) do Unicode
    __main__:1: UnicodeWarning: Unicode equal comparison failed
      to convert both arguments to Unicode - interpreting them 
      as being unequal
    False
    >>> chr(127) == unichr(127)   # chr(127) can be converted
    True
     

    Předtím tato konstrukce vyvolala výjimku UnicodeDecodeError, ale v této verzi jazyka by to mohlo způsobovat problém při přístupu do slovníku. Pokud použijete unichr(128) a chr(128) jako klíče, dostanete výjimku UnicodeDecodeError.

    (Implementoval Marc-André Lemburg.)

    Varování ImportWarning

    Jedna z nepříjemných chyb, kterou programátoři v Pythonu občas dělají, je, že zapomínají vložit __init__.py v adresáři balíčku. Ladění této chyby je nepříjemné a většinou vyžaduje spuštění interpreteru s parametrem -v k výpisu všech prohledávaných cest. Ve 2.5 se vygeneruje ImportWarning, pokud chcete importovat balíček bez __init__.py. Toto varování je ve výchozím nastavení potichu ignorováno, ale parametrem -Wd si jej můžete zobrazit.

    (Implementoval Thomas Wouters.)

    Drobná změna syntaxe

    Seznam bázových tříd v definici třídy může být prázdný. Tento kód je nyní v pořádku:

    class C():
        pass
    

    (Implementoval Brett Cannon.)

    Změny interaktivního interpreteru

    V interaktivním interpreteru byly quit a exit dlouhou dobu řetězce, které některým novým uživatelům pomáhaly s ukončením interpreteru.

    # Python 2.4
    >>> quit
    'Use Ctrl-D (i.e. EOF) to exit.'
    

    V Pythonu 2.5 jsou quit a exit objekty, které jednak produkují užitečný výstup, ale navíc jsou volatelné. Je tedy možné zapsat quit(), nebo exit() k ukončení interpreteru.

    # Python 2.5
    >>> quit
    'Use Ctrl-D (i.e. EOF) to exit.'
    

    (Implementoval Georg Brandl.)

    Interpret Pythonu může nyní přijímat standardní dlouhé parametry --help a --version a na Windows akceptuje /? pro zobrazení nápovědy.

    (Implementoval Georg Brandl.)

    Optimalizace interpreteru

    Mnoho optimalizací bylo vyvinuto na NeedForSpeed sprint, který se konal na Islandu, v hlavním městě Rejkjavík 21. až 28. května 2006. Byl zaměřen na vylepšení výkonu CPythonu a sponzorován společností EWT LLC spolu s CPP Games. Zde jsou některá vylepšení:

    • Nové typy set a frozen-set byly vytvořeny za pomoci slovníku. Ve verzi 2.5 byly upraveny přímo interní struktury pro implementaci množin a výsledkem je třikrát menší spotřeba paměti a v určitých případech dojde i ke zrychlení. (Implementoval Raymond Hettinger.)
    • Byla zlepšena rychlost některých operací v Unicode, jako třeba hledání podřetězců, dělení nebo kódování a dekódování mezi znakovými sadami. (Hledání podřetězců a dělení přidal Fredrik Lundh a Andrew Dalke na NeedForSpeed sprint. Znakové sady vylepšil Walter Dörwald a Martin von Löwis.)
    • Funkce long(str, base) je od nynějška rychlejší pro dlouhé řetězce, protože je počítáno menší množství průběřných výsledků. Špička je teď mezi osmisty až tisíci číslicemi, pro které je vylepšená funkce až šestkrát rychlejší. (Poslal Alan McIntyre a bylo přijato na NeedForSpeed sprint.)
    • Modul struct nyní překládá formátovací řetězce struktur do své interní reprezentace a ukládá je do mezipaměti, což zvýšilo rychlost o 20 %. (Přidal Bob Ippolito na NeedForSpeed sprint.)
    • Optimalizátor generátoru kódu nyní vyčísluje konstanty. Pokud programátor napíše a = 2 + 3, ve vygenerovaném kódu se objeví a = 5 (Navrhl a implementoval Raymond Hettinger.)
    • Pythonovské výjimky jsou teď new-stylled třídy, což je změna, která se výrazně projevila na zvýšení rychlosti. Zachycování výjimek je ve verzi 2.5 o 30 % rychlejší než ve 2.4. (Přidal Richard Jones, George Brandl a Sean Reifschneider na NeedForSpeed sprint.)

    Novinky nebo zlepšení standardní knihovny

    Navíc se v nové verzi objevily nebo podstatně zlepšily balíky

    • ctypes - umožňuje přímé volání funkcí ze sdílených knihoven

          import ctypes
      
          libc=ctypes.CDLL('libc.so.6')
          result=libc.printf("Hello ctypes\n")
          

      Na standardní výstup se vypíše řetězec a v result máme počet vypsaných znaků.

    • ElementTree - část knihovny Frederika Lundha ElementTree byla začleněna do balíčku xml.etree. Dostupné moduly jsou ElementTree, ElementPath, ElementInclude, včetně akcelerátoru cElementTree z ElementTree 1.2.6.
    • hashlib - nový modul hashlib napsaný Gregorgem P. Smithem nahrazuje md5 a sha moduly. Obsahuje další hashe (SHA-224, SHA-256, SHA-384, a SHA-512). Pokud je dostupné OpenSSL, modul používá algoritmy z ní.
    • sqlite3 - modul pysqlite, wrapper pro embedded databázi SQLite byl přidán do standardní knihovny pod názvem sqlite3.
    • wsgiref - Web Server Gateway Interface (WSGI) v1.0 je standardní rozhraní mezi webovými servery a webovými aplikacemi v Pythonu a je popsán v PEP 333. Tento balík je referenční implementace této specifikace.

    Závěr

    Naše krátké seznámení se s novinkami Pythonu 2.5 je u konce.

           

    Hodnocení: 100 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    21.8.2009 17:55 Mintaka
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5 - 3

    I staré chyby si zaslouží opravu:

    "množství průběŘných výsledků"
    a
    "osmisty" by se asi mělo psát s mezerou jako "osmi sty". Kdyby to byl osmistý, pak dohromady.

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.