24 komentářů k článku Python profesionálně: dynamické parametry, generátory, lambda funkce a with:

  1. BeryCZ

    díky

    fakt díky,dobrý článek… jen bych dodal, že kwds se (možná i častěji) pojmenovává jako kwargs

    a jsem opravdu rád za dictionary comprehensions v py3.x :) super, díky

  2. Domogled

    díky

    Moc děkuji za tento seriál. Dneska to pro mne bylo sice spíše opakování známého, ale zase v minulém dílu byly triky, které jsem neznal a které se mi líbily. Těším se na další pokračování a ať Vám chuť do psaní vydrží.
    Petr

  3. Havri

    Více myšlenek

    Pokud lze ještě nějak ovlivnit obsah budoucích článků, tak bych chtěl poprosit, aby to bylo více zaměřené na myšlenky, best practice nebo zkrátka něco, co je více vzdáleno syntaxi jazyka. Seriál zatím na mě působí jako ukecanější seznam „tipů a triků” pro Python a to si můžu přečíst jinde. Na Stack Overflow je jich celá hromada a zatím se v těchto dvou dílech neobjevilo snad nic, co by nebylo i v tomto seznamu.

    http://stackoverflow.com/questions/101268/hidden-features-of-python

    1. Martin Hassman

      Re: Více myšlenek

      První dva díly seriálu byly zaměřené na syntaxi a dle ohlasů to čtenářům pomohlo, takže se i nadále tomuhle přístupu nijak striktně vyhýbat nebudeme. Další díly jsou už posunuté jinam, uvidíme, zda vyhoví i vám.

      1. blizz

        Re: Více myšlenek

        a syntax highlighter nebude? alebo je taky problem pridat par riadkov js kodu? ak ano tak mi dajte pristup na ftp a ja to updatnem aj sam.

        1. Martin Hassman

          Re: Více myšlenek

          Highlighter bude. Co znamená onen *taky* problém? S tím ftp je to v dnešní době už trochu naivní, ten tu nepěstujeme 8-)

            1. Martin Hassman

              Re: Více myšlenek

              Ach tak. Na slovenčinu bez diakritiky si na příště budu muset pořídit tlumočníka 8-)

    2. Lukas

      Re: Více myšlenek

      Osobně mi stávající přístup zcela vyhovuje. Stack Overflow je sice web ke nezaplacení, ale domnívám se, že formát, který je zde zvolený, je ideální (detailnější vysvětlování, popisnost, dobře volené příklady).

  4. kutr

    Generátor

    Já bych měl dotaz k těm generátorům. Je to speciální pojem v Pythonu nebo se to obvykle používá? Já to znám z jiných jazyků pod anglickým termínem „list comprehension“ a už dlouho hledám český termín.

      1. Ales Zoulek

        Re: Generátor

        Ta terminologie je tam trosku zmatena.

        – *Iterator* je objekt, ktery ma specialni API (hlavne __inter__ metoda), diky kteremu jde vkladat jednoduse od for cyklu (apod.) Tzn
        for x in my_custom_iterator:
        pass

        – *Generator funkce*, ktera zjednodusuje vyvareni interatoru tak, ze nemusite definovat celou tridu, pouzice fci, ktera ma yield.
        def my_custom_ite­rator():
        yield 1
        yield 2

        – *Generator expression* je dalsi zjedoduseni, kde neni treba pouzivat ani funkci, pouze vyraz kratky vyraz ve stylu:
        my_custom_iterator = (i for i in …)

        Tzn. oboje je v zasade syntactic sugar, jak vytvorit objekt s iterator API.

        – *List comprehension* je zjednoduseny zapis na vytvareni listu.
        [ x for x in … ]

        Interatory to jsou v zasade vsechno.
        Za generatory se obvykle oznacuje generator expression, nebo generator fce. A dava se tim (podle kontextu) najevo, ze nejde o list comprehension (apod) a tedy ze se nevygeneruji vsechny prvky predem, ale generuji je postupne s kazdym pruchodem cyklu.

        1. Honza Kral

          Re: Generátor

          Souhlas, clanek je trochu zmateny co se tyce rozdilu mezi iterator, iterable, generator, generator expression a list/dict comprehension.

          Jinak pro upresneni (kdyz uz jsem za hnidopicha ;) ): __iter__ je magicka metoda ktera ma vracet iterator (je volana built-in funkci iter()), iterator je v podstate cokoliv co ma metodu .next() ktera vraci prvky a vyhodi StopIteration na konci. Iterable je pak cokoliv co ma metodu __iter__. V praxi to funguje tak, ze kdyz napisu

          for x in cokoliv

          tak se na cokoliv zavola __iter__() a na vracene hodnote se vola .next() do te doby dokud nenastane vyjimka StopIteration a predava se do promenne x.

          1. Petr Jediný

            Re: Generátor

            Ještě malé doplnění – v Pythonu verze 3 byla Honzou zmíněná metoda next přejmenována na __next__

  5. Honza Kral

    Sort + DRY

    Diky za clanek, pridavam par pripominek a doplnujicich informaci.

    Prosim nepouzivejte parametr cmp pro sort pokud to neni absolutne nutne. Parametr key dokaze v 99.9% pripadu dosahnout toho sameho jednoduseji a efektivneji (je zavolany jen jednou na kazde hodnote v listu):

    dates.sort(ke­y=lambda x: x.isoweekday())

    casto ani neni potreba psat vlastni lambdu a da se pouzit operator.attrgetter a operator.item­getter, navic v pythonu 3.X uz cmp= parametr u sort funkci ani neni. Vice info na: http://wiki.python.org/moin/HowTo/Sorting

    Autor spravne kritizuje ze neni dobre kopirovat na vsechna mista kde se pouziva nejaky iterator nejaky kod a pak navrhuje zlepseni ktere spociva v tom ze na dana mista nakopiruje jiny kod – obalujici funkci. To je zajiste zlepseni ale stale to neni v souladu s „DRY“ – v tomhle pripade by bylo mnohem vhodnejsi naimplementovat lazy loading tak, aby kdyz nekdo pristoupi na atribut (ci cokoliv jineho) na objektu ktery neni nacten, tak se objekt dotahne. Tim padem se programator nemusis starat o obalovani kodu vsude (coz je znacny prohresek proti DRY) a zaroven se tak zaruci to ze se nikdy nedotahuje nic zbytecne.

  6. PMD

    Pythonista

    Nechci autora urazit, ale připadá mi, že s Pythonem zas tak moc velké zkušenosti nemá. Nemá jasno v terminologii, zvyklostech (kwargs), ani best-practices. Nezná Honzu Krále:) Jinak článek je to docela dobrý, pěkně se čte, rád si osvěžím svoje znalosti, ale pro někoho, kdo si nedokáže opravit drobné nepřesnosti, může být zavádějící.

  7. .

    Re: Python profesionálně: dynamické parametry, generátory, lambda funkce a with

    Zřejmě ještě stále nejste v Pythonu zběhlý.

  8. starenka

    Titulek musí být dlouhý alespoň 4 znaky

    Jestli je soubor zavrenej se imo cistejc zjistuje pomoci f.closed a ne tim, ze se do nej pokousim zapsat ;)

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=3623