[python] Seznamy
Radek Holý
radekholypublic na gmail.com
Pátek Únor 13 00:58:44 CET 2015
Dne 13. února 2015 0:55 Radek Holý <radekholypublic na gmail.com> napsal(a):
>
>
> Dne 11. února 2015 10:08 Vladimir Macek <macek na sandbox.cz> napsal(a):
>
> On 10.2.2015 20:50, Honza Král wrote:
>> > 2015-02-10 20:36 GMT+01:00 Radek Holý <radekholypublic na gmail.com>:
>> >> V Pythonu dělám skoro 9 let a pořád platí, že kdykoliv někde
>> >> narazím na "reduce", "map" apod. tak mě to vždy zdrží a chvíli mi
>> >> trvá, než pochopím o co jde. List comprehensions se mi čtou
>> >> snadněji - přirozeněji. Nehledě na to, že ty funkcionální
>> >> záležitosti jsou skoro vždy spojené s deklarací jinak zbytečných
>> >> funkcí se složitým významem, nebo ještě komplikovanějšími lambda
>> >> funkcemi. Každopádně je to prostě otázku vkusu/zvyku... Jedním z
>> >> problémů může pro mě být ta prefixová notace. Vypadá to jako Lisp
>> >> :-)
>>
>> Doufám, že se shodneme, že to je věc osobních preferencí a nebudeme si to
>> navzájem vyčítat. :-) Zajisté můžu považovat za elegantnější vytáhnout
>> filtrační nebo transformační logiku do extra funkce s komentáři a pak jí
>> předhodit do filter/map než to patlat do třířádkového C-G. Podotýkám pro
>> jistotu znovu, že používám jak filter/map + zřídka reduce, tak C-G, vždy
>> podle svého citu pro vhodnost. Snažím se dodržovat Zen.
>>
>> Kdykoli píšu \, trošku uvnitř umřu.
>>
>>
>> > Vidim to uplne stejne, proto jsem byl prekvapen kdyz tady slysim
>> > zastance filter/map/... Ja osobne se k nim skutecne uchyluji jen
>> > obcas kvuli vykonu a v situaci kdy je naprosto jasne, co to bude
>> > delat.
>>
>> To poslední negrokuju. :-) Jasné je snad v Pythonu vše, proto ho máme
>> rádi,
>> ne? :-)
>>
>>
>> >> Ještě mě zarazilo to "stáhneme 10 URL". S tím mám vždy osobní
>> >> problém. Jakmile někdo volá "map", aniž by ho zajímala návratová
>> >> hodnota volané funkce, považuji to za chybu. Nehledě na to, že v
>> >> Pythonu 3 "map" vrací iterátor, takže se kvůli tomu ještě typicky
>> >> "map" obaluje do "list"... V těchto případech vždy preferuji
>> >> klasický "for" cyklus. Ale opět je to jen můj názor.
>>
>> Dovoluji si i zde spíše nesouhlasit, zejména se slovem typicky.
>> "Přetypování" tohoto typu snad používáme až tehdy, kdy je to nutné, ne?
>> Pokud někde dostanu iterátor, je hromada případů, kdy se elegantně a
>> efektivně použije přímo.
>>
>>
> U toho přetypování jsem měl na mysli, když se map (nebo list
> comprehension) použije místo for cyklu, když se už dál nepracuje s
> návratovými hodnotami. Tehdy se (stále si trvám na) typicky map obaluje do
> listu, aby se ten výraz vyhodnotil. Jinak samozřejmě nění map potřeba
> obalovat do listu.
>
>
>>
>> > Naprosty souhlas, parkrat jsem videl volani map ci list
>> > comprehension bez zajmu o vysledek a take s tim mam problem - je to
>> > plytvani (zbytecne se alokuje list) a je to hure citelne.
>>
>> Nedochází mi, kde jste vzali, že spojuju příklad se stažením 10 URL s
>> map(), psal jsem zrovna, že jsem na tom příkladu ilustroval C-G. Ale i na
>> map() se to dá použít
>>
>
> Moje chyba. Špatně jsem si to zapamatoval. Nicméně moje poznámka se týkala
> jak list comprehension tak map. V obou případech mi toto použití připadá
> špatné.
>
>
>> map(urllib.urlopen, ('http://www.seznam.cz', 'http://google.com',
>> 'http://ibm.com'))
>>
>> Též nerozumím tomu, jak jste vyvodili, že se jak v tomto případu, tak v
>> tom
>> mnou prve zmíněném s C-G nezajímám o návratovou hodnotu.
>>
>
> Nenapadlo mě, k čemu by návratová hodnota mohla být dobrá při stahování
> souboru. Nevěděl jsem, jako funkci máš na mysli, ale představoval jsem si,
> že pokud jde o stahování souboru, bude to fce, které zadám url a cestu na
> disku a ona soubor stáhne, nebo vyhodí výjimku. V takové případě není
> potřeba žádná návratová hodnota. Pokud nějaká potřeba je, tak je v tom
> případě vše v pořádku. I když tedy stejně preferuji volání jakýchkoliv
> funkcí s vedlejším efektem (nebo jaký je správný překlad) ve for cyklu.
> Když vydím map (nebo list comprehension), nečekám, že se bude dít něco
> zásadního kromě filtrování/spracování dat.
>
Fuj, to Y jakože nikdo neviděl, ano? :)
> Jednak jsem to zmiňoval jako rychlou ukázku C-G jakožto konstruktu pro
>> studenty (kde se navc netvoří profesionální kód), za druhé mohu dostat
>> všechny potřebné informace vč. stavových a za třetí... kam se vám poděl
>> EAFP (https://docs.python.org/2/glossary.html)?
>>
>>
> Tu poznámku o EAFP jsem nepochopil.
>
>
>>
>> > Mimochodem v python3 uz reduce ani neni builtin (byl presunuty do
>> > functools) a i Guido to vidi obdobne:
>> > http://www.artima.com/weblogs/viewpost.jsp?thread=98196
>>
>> S tím souhlasím, nic proti. Sám jsem psal, že ji používám zřídka.
>>
>> Děkuji za diskusi, štvete mě jen malinko. :-)
>>
>
> Cílem určitě nebylo někoho štvát. Měl jsem pocit, že nabízím konstruktivní
> názor. Pokud to tak nebylo, omlouvám se.
> --
> Radek
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://www.py.cz/pipermail/python/attachments/20150213/74b02326/attachment.html>
Další informace o konferenci Python