abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 01:00 | Nová verze

    ESPHome, tj. open source systém umožňující nastavovat zařízení s čipy ESP (i dalšími) pomocí konfiguračních souborů a připojit je do domácí automatizace, například do Home Assistantu, byl vydán ve verzi 2024.4.0.

    Ladislav Hagara | Komentářů: 0
    včera 22:11 | IT novinky Ladislav Hagara | Komentářů: 0
    včera 20:55 | Nová verze

    Neziskové průmyslové konsorcium Khronos Group vydalo verzi 1.1 specifikace OpenXR (Wikipedie), tj. standardu specifikujícího přístup k platformám a zařízením pro XR, tj. platformám a zařízením pro AR (rozšířenou realitu) a VR (virtuální realitu). Do základu se z rozšíření dostalo XR_EXT_local_floor. Společnost Collabora implementuje novou verzi specifikace do platformy Monado, tj. open source implementace OpenXR.

    Ladislav Hagara | Komentářů: 2
    včera 17:22 | Nová verze

    Byla vydána nová verze 0.38.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 4.4 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 1
    včera 17:11 | Nová verze

    ClamAV (Wikipedie), tj. multiplatformní antivirový engine s otevřeným zdrojovým kódem pro detekci trojských koní, virů, malwaru a dalších škodlivých hrozeb, byl vydán ve verzích 1.3.1, 1.2.3 a 1.0.6. Ve verzi 1.3.1 je mimo jiné řešena bezpečnostní chyba CVE-2024-20380.

    Ladislav Hagara | Komentářů: 1
    včera 12:11 | IT novinky

    Digitální a informační agentura (DIA) oznámila (PDF, X a Facebook), že mobilní aplikace Portál občana je ode dneška oficiálně venku.

    Ladislav Hagara | Komentářů: 7
    včera 05:11 | Komunita

    #HACKUJBRNO 2024, byly zveřejněny výsledky a výstupy hackathonu města Brna nad otevřenými městskými daty, který se konal 13. a 14. dubna 2024.

    Ladislav Hagara | Komentářů: 2
    17.4. 17:55 | IT novinky

    Společnost Volla Systeme stojící za telefony Volla spustila na Kickstarteru kampaň na podporu tabletu Volla Tablet s Volla OS nebo Ubuntu Touch.

    Ladislav Hagara | Komentářů: 3
    17.4. 17:44 | IT novinky

    Společnost Boston Dynamics oznámila, že humanoidní hydraulický robot HD Atlas šel do důchodu (YouTube). Nastupuje nová vylepšená elektrická varianta (YouTube).

    Ladislav Hagara | Komentářů: 1
    17.4. 15:11 | Nová verze

    Desktopové prostředí LXQt (Lightweight Qt Desktop Environment, Wikipedie) vzniklé sloučením projektů Razor-qt a LXDE bylo vydáno ve verzi 2.0.0. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 5
    KDE Plasma 6
     (68%)
     (10%)
     (2%)
     (19%)
    Celkem 556 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Novinky v Python 2.5

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

    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 jsou podmíněné výrazy, podpora pro partial funkce nebo try-catch-finally.

    Jazyk Python prochází neustálým vývojem. Ovšem po revolučních změnách, jako new-stylled classes v Pythonu 2.2, se tvůrci soustředí spíše na postupnou evoluci. Nicméně i ve verzi 2.5 se najdou výrazné změny, jako například konstrukce with nebo předávání parametrů do generátorů. Novinky této verze shrnuje dokument whatsnew25.html na oficiálních stránkách Pythonu.

    Požadavky na nové rysy jazyka jsou shrnuty v takzvaném PEPu, což je Python Enhancement Proposal. Jedná se o obdobu Apocalypse v Perlu nebo RFC pro Internet. Každé vylepšení má tedy přiřazeno číslo dokumentu, které je podrobně popisuje.

    Podmíněné výrazy

    Mnoho jazyků nabízí speciální ternární operátor, který umožňuje zapsat výraz typu pokud platí podmínka cond, přiřaď true_val, jinak false_val. Python nic takového neobsahoval a bylo nutné používat podmínky:

    if cond:
        x = true_val
    else:
        x = false_val
    

    V konferencích comp.lang.python a python-dev proběhlo mnoho vzrušených diskusí především mezi zastánci tradičních ternárních operátorů z C a těmi, kteří nechtěli přidávat další syntaktické prvky, ale využít ty stávající. Guido Van Rossum se nakonec přiklonil k této syntaxi:

    x = true_val if cond else false_val
    

    V tomto případě ovšem došlo ke zkomplikování vyhodnocení kódu. Nejprve se vyhodnotí podmínka uprostřed a na jejím základě dojde k vyhodnocení jedné ze dvou krajních hodnot. Tato syntaxe vypadá divně a složitě. Jaký je důvod mít podmínku uprostřed a ne na prvním místě jako v C? K rozhodnutí došlo potom, co se porovnávala čitelnost nové syntaxe v modulech standardní knihovny. Vývojáři došli k názoru, že zápis x přiřaď true_val pokud platí podmínka cond, jinak false_val odpovídá běžnému způsobu uvažování.

    PEP 308, Conditional Expressions
    PEP napsal Guido van Rossum a Raymond D. Hettinger; implementoval Thomas Wouters.

    Modul functools

    Modul functools obsahuje nástroje pro podporu funkcionálního stylu programování. Jednou z užitečných funkcí je partial, která umožňuje za běhu vytvářet varianty již existujících funkcí. Mějme funci f(x, y, z) a z ní si (dynamicky za běhu) vytvoříme g(f(1, y, z)).

    Funkce je deklarována takto: partial(func, arg1, arg2, ... kwarg1=value1, kwarg2=value2) a vrací volatelný objekt, takže se chová úplně stejně jako klasická funkce (což je pochopitelně také volatelný objekt).

    import functools
    
    def log(subsystem, message):
        return "%s: %s" % (subsystem, message)
    
    server_log = functools.partial(log, subsystem='server')
    
    print server_log('unable to open socket')
    

    Další funkcí je update_wrapper, která umožňuje skrýt vnořené funkce. Například dekorátory se v Pythonu skládají z vnější a vnořené funkce a pokud dojde k chybě ve vnořené, vypíše se jako příčina chyby ona. Toto (logické) chování ovšem může být matoucí, protože se ve výpisu objeví chyba ve vnořené funkci, která se v kódu neobjevuje. Tato funkce potom zkopíruje jméno, modul a dokumentační řetězec do vnořené funkce, takže se ve výpisu chyb objeví pouze vnější funkce.

    def my_decorator(f):
        def wrapper(*args, **kwds):
            print 'Calling decorated function'
            return f(*args, **kwds)
        functools.update_wrapper(wrapper, f)
        return wrapper
    

    Případně je možné použít dekorátor wraps:

    def my_decorator(f):
        @functools.wraps(f)
        def wrapper(*args, **kwds):
        ...
    

    PEP 309, Partial Function Application
    PEP navrhl a sepsal Peter Harris; implementoval Hye-Shik Chang a Nick Coghlan, upravil Raymond Hettinger.

    Absolutní a relativní importy

    Malá část tohoto vylepšení je už v Pythonu 2.4, kdy závorky v konstrukci from ... import ... zjednodušily a zpřehlednily import mnoha jmen, protože se dají zapsat na jednom řádku. Důležitější část je implementována ve verzi 2.5 - relativní nebo absolutní importy. V budoucích verzích Pythonu by se měly používat právě absolutní importy jako výchozí způsob. Dejme tomu, že máme adresář balíčků jako je tento:

    pkg/
    pkg/__init__.py
    pkg/main.py
    pkg/string.py
    

    Balík pkg obsahuje moduly pkg.main a pkg.string. Mějme kód v modulu main.py. Co se stane, pokud se v něm provede výraz import string? V Pythonu verze 2.4 a nižší se systém nejprve podívá do adresáře balíčku (pkg) pro provedení relativních importů, najde pkg/string.py, naimportuje soubor jako modul pkg.string a sváže ho se jménem string ve jmenném prostoru modulu pkg.main. To je zcela v pořádku, pokud chcete importovat pkg.string. Ale co v případě, že chcete použít standardní modul Pythonu? Bez hacků, jako je prohledávání sys.modules, to prostě nejde. Holger Krekel vytvořil balíček py.std, který nabízí čistší způsob. Můžeme napsat import py; import py.string.join(). Nevýhodou je, že není standardní součástí všech instalací Pythonu.

    Od verze 2.5 jazyk podporuje změnu chování importu. Je nutné napsat direktivu from __future__ import absolute_import a import začne nejprve prohledávat standardní knihovnu Pythonu. Plánuje se, že od verze 2.7 to bude výchozí nastavení.

    Relativní importy jsou stále dostupné a to přidáním tečky před jméno modulu při použití konstrukce from ... import:

    # Importuje jmena z pkg.string
    from .string import name1, name2
    # Importuje pkg.string
    from . import string
    

    Teď se importuje modul string relativně k současnému balíčku, takže v pkg.main se naimportují name1 a name2 z pkg.string. Přidáním dalších teček můžeme posunout počátek importu i na předka našeho balíčku:

    from . import D                 # Importuje A.B.D
    from .. import E                # Importuje A.E
    from ..F import G               # Importuje A.F.G
    

    Je důležité si uvědomit, že toto chování se netýká konstrukce import, pouze from ... import.

    PEP 328, Imports: Multi-Line and Absolute/Relative
    PEP sepsal Aahz; implementoval Thomas Wouters.

    Konstrukce try/except/finally

    Do verze 2.4 bylo možné používat konstrukci try dvěma způsoby. Buď používat blok finally nebo jeden či více bloků except pro zachycení výjimek. Nebylo možné zkombinovat blok(y) except s blokem finally. Bylo tomu tak proto, že vygenerování správného bytecode pro tuto konstrukci není jednoduché a navíc se tvůrcům zdála sémantika poněkud nejasná. Ovšem Guido van Rossum jistý čas dělal v Javě, která tuto kombinovanou konstrukci obsahuje, a to mu pomohlo vyřešit potíže se sémantikou.

    try:
        block-1 ...
    except Exception1:
        handler-1 ...
    except Exception2:
        handler-2 ...
    else:
        else-block
    finally:
        final-block
    

    Je vykonáván kód označený jako block-1. Pokud v něm dojde v výjimce, bude zachycena a zpracována v příslušném bloku except. Pokud nebyla vytvořena žádná výjimka, je provedena část else-block. Bez ohledu na to, co se stalo předtím, je část označená jako finally-block vykonána vždy a to i v případě, že kód handler-1, handler-2 nebo else-block vygeneruje další výjimku.

    PEP 341, Unifying try-except and try-finally
    PEP sepsal Georg Brandl; implementoval Thomas Lee.

    Závěrem

    Dále v Pythonu proběhla řada dalších změn, jako je konstrukce wich, nová základní třída pro výjimky, další speciální metody, konstrukce yield se stala výrazem a mnoho dalších. Další díl se bude věnovat změnám nejvýraznějším, vylepšeným generátorům a konstrukci with.

    Nejčtenější články posledního měsíce

    Událo se v týdnu 12/2024
    Týden na ScienceMag.cz: Přišli s novým nápadem, jak poznat, zda text napsala umělá inteligence
    Týden na ITBiz: Americká vláda poskytne Intelu téměř 20 miliard dolarů na podporu výroby čipů v USA

    Nejkomentovanější články posledního měsíce

    Týden na ScienceMag.cz: Přišli s novým nápadem, jak poznat, zda text napsala umělá inteligence
      všechny statistiky »

    Seriál Novinky v Python 2.5 (dílů: 3)

    Novinky v Python 2.5 (první díl)
    »—> Novinky v Python 2.5 - 2 (korutiny, konstrukce with)
    Novinky v Python 2.5 - 3 (poslední díl)

    Související články

    Standardní knihovna pro Python - 1 (builtins)
    Standardní knihovna pro Python - 2 (builtins 2)
    Standardní knihovna pro Python - 3 (builtins 3)
    Standardní knihovna pro Python - 4 (builtins 4)
    Standardní knihovna pro Python - 5 (řetězce)
    Ruby pro začátečníky - 1
    Seriál: BASH
    Python a PyQt - 1 (úvod)
    Python a PyQt - 2 (podmínky, cykly, tlačítka)
    Začínáme programovat v jazyce Python
    Kommander - 1 (Skriptované GUI)
    Kommander - 2 (Starý parser)
    Kommander - 3 (Nový parser)
    Seriál: Začíname KProgramovať
    Programujeme v PERLu - I
    Programujeme v PERLu - II

    Další články z této rubriky

    LLVM a Clang – více než dobrá náhrada za GCC
    Ze 4 s na 0,9 s – programovací jazyk Vala v praxi
    Reverzujeme ovladače pro USB HID zařízení
    Linux: systémové volání splice()
    Programování v jazyce Vala - základní prvky jazyka
           

    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ář

    Jiří P. avatar 12.12.2006 07:27 Jiří P. | skóre: 24 | blog: programování
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5

    Ternarni operator jsem nahrazoval fintou

    cond and true_val or false_val
    In a world without fences and walls, who needs Gates and Windows?
    12.12.2006 07:50 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Ano, skvěle pythonovsky čitelné. :-D
    12.12.2006 09:37 Viktor Lieskovsky | Bratislava
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Ano, ale pre zaporne true_val hodnoty si treba pomoct trikom s listom:

    (cond and [true_val] or [false_val])[0]

    Viac v diveintopython.
    12.12.2006 15:11 Jan Molic
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Došel jsem k tomu, že nejrychleji čitelné jsou víceřádkové konstrukce, ne zkomprimované jednořádkové výrazy. Ty sice na první pohled vypadají jednoduše, ale člověk si je musí dekódovat, což zabere více "mozkového" času. Proto raději píšu ukecaně
    if cond
       x = 1
    else
       x = 2
    end
    
    12.12.2006 18:35 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    A já si zase chrochtám blahem, když můžu (v Ruby) napsat xxx = yyy if zzz. Nevím, zda je v Ruby i nějaká else část, to už bych asi zas tak nadšený nebyl, ale je pravda, co se tvrdí v článku: je to mnohem bližší přirozenému uvažování.

    O chvilku později… pravda, mluvíte vlastně o čtení. Je fakt, že podmínku utopenou kdesi za výrazem můžu snadno přehlídnout… teda mohl bych, kdybych nepoužíval Ruby akorát na skriptíky zvící max. desítek řádek. Ale něco na tom bude.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    12.12.2006 18:42 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    ale ved v ruby mame
    (cond)?(x=1):(x=2)
    :)
    13.12.2006 13:51 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Uff, tohle mi bylo doteď utajeno a ani mi moc nevadí, že jsem to nevěděl. Tenhle zápis se nejen blbě čte, ale i píše, fakt ne, dík :-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    13.12.2006 14:55 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    ale ved prave o tom tu je rec :)

    http://en.wikipedia.org/wiki/Ternary_operator
    13.12.2006 14:58 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    a este ti nedoslo, ze ho mozes pouzit aj uprostred nejakeho vyrazu, ako argument a tak :)
    13.12.2006 15:43 rane | skóre: 3
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    to môžeš v ruby urobiť zo všetkým, pretože v ruby je všetko výraz, takže napríklad moje obľúbené:

    x = if cond then 1 else 2 end
    13.12.2006 16:05 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    si prasa :P

    ale nikdy by ma nenapadlo, ze to v ruby prejde...
    14.12.2006 00:17 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Jaké prase? :-( Je to jako v Lispu, všechno vrací hodnotu a jestli ji člověk použije nebo ne, je jen na něm. Myslím, že se to netýká jen if. ;-) A prvky jazyka jsou ortogonální a dají se kombinovat. Aspoň je to konzistentní a logické. Ať se pythonisté třeba vztekají a stavějí na hlavu. :-D
    14.12.2006 14:12 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    viem, ze vsetko vracia hodnotu, je to napr. krasne vidiet v irb.
    14.12.2006 00:22 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Mimochodem, mě tohle překvapuje, že by to někoho nenapadlo. Ruby se mi líbí specificky kvůli právě takovýmhle věcem. Stejně tak dobré důvody, proč jít do Ruby, jsou bloky, otevřené třídy a podobně – prostě ty věci, které Ruby zdědilo z „experimentálnějších“ jazyků a které se snaží protlačit do mainstreamu. A zdá se, že to takhle chápe spousta lidí. Pokud Ruby používáš a používání příkazů jako výrazů Tě nikdy nenapadlo, napadá mě, jestli jsi na ten jazyk nenarazil spíš náhodou než cíleně. ;-)
    14.12.2006 13:21 rane | skóre: 3
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Hej, toto ale hlavne bloky a otvorené triedy sú pre mňa najzásadnejšie vlastnosti ruby. Keby sa ich podarilo pretlačiť napríklad do takého php (ktoré som nútený používať v práci), to by bol raj :-)
    14.12.2006 14:05 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    cpat if-then-else-end napr. ako argument? chod s tym niekam. to by ma ani v nocnej more nenapadlo (a uz vobec nie pchat to na jeden riadok, ble). a uz vobec nie ked mam k dispozicii ?:

    fuj
    14.12.2006 15:16 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Hm, perly sviním… :-D
    14.12.2006 15:32 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    prasata ste tu vy a tie "perly" si po sebe citajte sami... :P
    14.12.2006 15:51 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Můj názor je, že nepoužívat jen kvůli pofidérním subjektivním motivům vyjadřovací prostředky jazyka (pointerovou aritmetiku v C, regexpy v Perlu, návatové hodnoty v Lispu a Ruby, objekty v C++, vnitřní třídy v Javě, generátory v Pythonu) alespoň na těch místech, kde to má smysl, je jako používat šroubovák na páčení a nůž na šroubování. Taky to jde, ale s větším úsilím, než je nezbytně nutné, a člověk se pořád o něco okrádá. A kromě toho, neidiomatický kód se IMHO čte hůř :-p ;-) When in Rome, do as the Romans do. ;-)
    14.12.2006 16:01 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    pis si podmienky k argumentom, ja ti branit nemam ako, ale nadavat ti budem :P a neprezentuj to tak vznesene, pretoze je to odporne. tvaris sa akoby ten ternarny operator neexistoval - preboha, ved je to zmysel jeho existencie...
    14.12.2006 16:08 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Umělý smysl jeho existence, zapomněl jsi dodat. Samozřejmě, jazyky rozlišující výrazy a příkazy nemají moc na vybranou, ale to je jejich problém, ne můj. ;-)
    14.12.2006 16:12 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    tak preco v ruby vobec je, ked je taky umely a ruby tak cisty, ha?
    14.12.2006 16:32 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Protože Ruby z Perlu zdědilo TIMTOWDY. :-D
    14.12.2006 16:44 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    nie, iba tam bol umyselne pridany, pretoze tak to je spravne.

    teraz pravdu: naozaj by si ten if pouzil?
    14.12.2006 17:11 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Nevidím v tom problém, zvlášť, když bych v něm chtěl třeba sekvencovat kus výpočtu a celé to někam předat a nezatěžovat se s vymýšlením nějakých názvů proměnných. Prostě jako v Lispu, normálka. :-)
    14.12.2006 17:12 rane | skóre: 3
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Presne tak, ja to tak používam bežne a bez akýchkoľvek výčitok svedomia :-)
    14.12.2006 17:30 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    takze by si vybral nieco ako

    bla(if (nil) then 0 else 1 end)

    namiesto

    bla((nil) ? (0) : (1))
    14.12.2006 17:47 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Já bych nejradši bral…
    (bla (if nil 0 1))
    …ale každému, jak je libo. ;-) Ne, v bezzávorkovém jazyku, jako je Ruby, je lepší na pouhé dvě hodnoty a jednoduchou podmínku použít podmíněný výraz, páč ty dva znaky znamenají méně balastu, ale ne všechno je takhle jednoduché, že. ;-)
    14.12.2006 17:54 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    ak mas normalny editor, lahko vidis kde ti zatvorky zacinaju/koncia a tie slova su naozaj redundantne a zvysuju neprehladnost (nie nadarmo sa normalne odsadzuju a odriadkovavaju). uz sa nevykrucaj :P
    14.12.2006 18:40 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    „ak mas normalny editor, lahko vidis kde ti zatvorky zacinaju/koncia a tie slova su naozaj redundantne a zvysuju neprehladnost“
    Díky, přidám si Tě na seznam obáhjců Lispu, tohle pořád tvrdím. :-D
    14.12.2006 18:54 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    keby si trochu neprekrucal vyznam :) proti lispu nic nemam ale ovladam ho zatial iba tak aby som vedel co mam v ~/.emacs :)
    13.12.2006 00:15 mykhal | skóre: 6
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    myslím, že je škoda, že nejde udělat print "OK" if cond, protože else část je povinná. takže člověka hned napadne print "OK" if cond else pass, což je špatně, protože se nerozhoduje o provedení příkazu print, ale o jeho argumentu, což mi nepřijde vždy úplně intuitivní. Takže jestli tomu rozumím, touto novou syntaxí ekvivalent if cond: print "OK" zapsat nelze .. (?)
    13.12.2006 06:56 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Moc jsem z toho nepochopil, ale pokusím se odpovědět.

    Ternární operátor slouží pro výrazy, takže příkaz print "OK" není na tomto místě povolen (Python v tomto ohledu dodržuje algolovské rozdělení příkazů a výrazů). Je pravda, že část else by mohla být nepovinná a fungovat by to mohlo asi takto. Nechce to někdo navrhnout?
    a = 5 if cond else None
    
    No a ten if cond: print "OK" napsat jde i ve 2.5
    When your hammer is C++, everything begins to look like a thumb.
    13.12.2006 18:07 mykhal | skóre: 6
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    nevím jak vám, ale mě to python normálně povolí ..
    14.12.2006 16:09 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Aha, omlouvám se, je to print "OK" if True else None ... já tam pořád cpal ham = print .... Ale právě ta větev else None tam být musí, přitom zbytečně :-(
    When your hammer is C++, everything begins to look like a thumb.
    12.12.2006 07:53 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    BTW, co dělá konstukce „witch“? Pořádá v ctihodném aplikačním serveru divoký sabbat? :-D
    12.12.2006 08:53 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    No a pak, že není Python kouzelný :-). Takový krásný překlep ...
    When your hammer is C++, everything begins to look like a thumb.
    finc avatar 12.12.2006 08:48 finc | skóre: 8 | blog: Finc | Kolín
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Python je velice zajímavá věc. Jediné, na co se nedokážu odvyknout jsou složené závorky, to mi na rozdíl od odsazování příjde přehlednější (samozřejmě odsazování ke kodu patří). :(
    Kdo Vam dal pravo ty lidi urazet? A kdo ti dal pravo cumet z okna, ty kr.vo!
    12.12.2006 10:52 Marek
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Me take. (Nejen)proto pouzivam Ruby. Jak je videt z tohoto clanku, Python se porad vic Ruby priblizuje.
    Mikos avatar 14.12.2006 16:13 Mikos | skóre: 34 | blog: Jaderný blog | Praha
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    To mě tedy naopak "2D syntaxe" vyhovuje neskonale více než složené závorky. Je to jedna z věcí kvůli které Python miluju...
    CETERUM CENSEO DRM ESSE DELENDAM Ostatně soudím, že DRM musí být zničeno!
    12.12.2006 11:38 neurol23
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    uz python umi opravdu paralelni programy?
    12.12.2006 14:42 pepr
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    A co jsou podle tebe "opravdu paralelní programy"?
    13.12.2006 10:02 neurol23
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    no vim, ze python mel omezeni, ze i pri pouzivani vice vlaken, mohlo v jednom okamziku bezet pouze jedno vlakno (a to i na viceprocesorovych ci vicejadrovych strojich), coz je v case core2duo apod. dost blby omezeni

    existuje sice stackless python (http://www.stackless.com/), kterej tohle omezeni nema, jenze s tim se clovek v bezne praxi nesetka (o jeho "rozsirenosti" bohuzel hovori i fakt, ze pro nej neexistuji balicky pro zadnou distribuci :-(, aspon o zadnych nevim)
    13.12.2006 14:44 MarSik | skóre: 16 | Brno
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Docela by me zajimalo, jestli jste uz nekdo zkousel volani funkci z externich dynamickych knihoven (ctypes modul), ja se k tomu zatim nedostal, ale brzo to planuju.
    Nothing is foolproof...fools are very clever.
    13.12.2006 15:33 odolmed3
    Rozbalit Rozbalit vše Re: Novinky v Python 2.5
    Diky za clanok, aspon nemusim kvoli novym vlastnostiam lustit PEPy. Dokumentacia k novym featuram je dost biedna a knihy ktore su na trhu pokryvaju nanajvys Python 2.3.

    Založit nové vláknoNahoru

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