Dne 13. února 2015 0:55 Radek Holý <radekholypub...@gmail.com> napsal(a):
> > > Dne 11. února 2015 10:08 Vladimir Macek <ma...@sandbox.cz> napsal(a): > > On 10.2.2015 20:50, Honza Král wrote: >> > 2015-02-10 20:36 GMT+01:00 Radek Holý <radekholypub...@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 >
_______________________________________________ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz