<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">Dne 13. února 2015 0:55 Radek Holý <span dir="ltr"><<a href="mailto:radekholypublic@gmail.com" target="_blank">radekholypublic@gmail.com</a>></span> napsal(a):<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">Dne 11. února 2015 10:08 Vladimir Macek <span dir="ltr"><<a href="mailto:macek@sandbox.cz" target="_blank">macek@sandbox.cz</a>></span> napsal(a):<div><div class="h5"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>On 10.2.2015 20:50, Honza Král wrote:<br>
> 2015-02-10 20:36 GMT+01:00 Radek HolĂ˝ <<a href="mailto:radekholypublic@gmail.com" target="_blank">radekholypublic@gmail.com</a>>:<br>
</span><span>>> V Pythonu dÄ›lám skoro 9 let a pořád platĂ, Ĺľe kdykoliv nÄ›kde<br>
>> narazĂm na "reduce", "map" apod. tak mÄ› to vĹľdy zdržà a chvĂli mi<br>
>> trvá, neĹľ pochopĂm o co jde. List comprehensions se mi ÄŤtou<br>
>> snadnÄ›ji - pĹ™irozenÄ›ji. NehledÄ› na to, Ĺľe ty funkcionálnĂ<br>
>> záležitosti jsou skoro vždy spojené s deklaracà jinak zbytečných<br>
>> funkcĂ se sloĹľitĂ˝m vĂ˝znamem, nebo ještÄ› komplikovanÄ›jšĂmi lambda<br>
>> funkcemi. KaĹľdopádnÄ› je to prostÄ› otázku vkusu/zvyku... JednĂm z<br>
>> problémů může pro mě být ta prefixová notace. Vypadá to jako Lisp<br>
>> :-)<br>
<br>
</span>Doufám, Ĺľe se shodneme, Ĺľe to je vÄ›c osobnĂch preferencĂ a nebudeme si to<br>
navzájem vyÄŤĂtat. :-) ZajistĂ© mĹŻĹľu povaĹľovat za elegantnÄ›jšà vytáhnout<br>
filtraÄŤnĂ nebo transformaÄŤnĂ logiku do extra funkce s komentáři a pak jĂ<br>
pĹ™edhodit do filter/map neĹľ to patlat do tĹ™ĂřádkovĂ©ho C-G. PodotĂ˝kám pro<br>
jistotu znovu, Ĺľe pouĹľĂvám jak filter/map + zĹ™Ădka reduce, tak C-G, vĹľdy<br>
podle svĂ©ho citu pro vhodnost. SnaĹľĂm se dodrĹľovat Zen.<br>
<br>
Kdykoli pĂšu \, trošku uvnitĹ™ umĹ™u.<br>
<span><br>
<br>
> Vidim to uplne stejne, proto jsem byl prekvapen kdyz tady slysim<br>
> zastance filter/map/... Ja osobne se k nim skutecne uchyluji jen<br>
> obcas kvuli vykonu a v situaci kdy je naprosto jasne, co to bude<br>
> delat.<br>
<br>
</span>To poslednà negrokuju. :-) Jasné je snad v Pythonu vše, proto ho máme rádi,<br>
ne? :-)<br>
<span><br>
<br>
>> JeštÄ› mÄ› zarazilo to "stáhneme 10 URL". S tĂm mám vĹľdy osobnĂ<br>
>> problĂ©m. Jakmile nÄ›kdo volá "map", aniĹľ by ho zajĂmala návratová<br>
>> hodnota volané funkce, považuji to za chybu. Nehledě na to, že v<br>
>> Pythonu 3 "map" vracà iterátor, takže se kvůli tomu ještě typicky<br>
>> "map" obaluje do "list"... V tÄ›chto pĹ™Ăpadech vĹľdy preferuji<br>
>> klasický "for" cyklus. Ale opět je to jen můj názor.<br>
<br>
</span>Dovoluji si i zde spÚe nesouhlasit, zejména se slovem typicky.<br>
"PĹ™etypovánĂ" tohoto typu snad pouĹľĂváme aĹľ tehdy, kdy je to nutnĂ©, ne?<br>
Pokud nÄ›kde dostanu iterátor, je hromada pĹ™ĂpadĹŻ, kdy se elegantnÄ› a<br>
efektivnÄ› pouĹľije pĹ™Ămo.<br>
<span><br></span></blockquote><div><br></div></div></div><div>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.<br></div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>
<br>
> Naprosty souhlas, parkrat jsem videl volani map ci list<br>
> comprehension bez zajmu o vysledek a take s tim mam problem - je to<br>
> plytvani (zbytecne se alokuje list) a je to hure citelne.<br>
<br>
</span>NedocházĂ mi, kde jste vzali, Ĺľe spojuju pĹ™Ăklad se staĹľenĂm 10 URL s<br>
map(), psal jsem zrovna, Ĺľe jsem na tom pĹ™Ăkladu ilustroval C-G. Ale i na<br>
map() se to dá pouĹľĂt<br></blockquote><div><br></div></span><div>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Ă©.<br></div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
map(urllib.urlopen, ('<a href="http://www.seznam.cz" target="_blank">http://www.seznam.cz</a>', '<a href="http://google.com" target="_blank">http://google.com</a>',<br>
'<a href="http://ibm.com" target="_blank">http://ibm.com</a>'))<br>
<br>
TĂ©Ĺľ nerozumĂm tomu, jak jste vyvodili, Ĺľe se jak v tomto pĹ™Ăpadu, tak v tom<br>
mnou prve zmĂnÄ›nĂ©m s C-G nezajĂmám o návratovou hodnotu.<br></blockquote><div><br></div></span><div>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.<br></div></div></div></div></blockquote><div><br></div><div>Fuj, to Y jakoĹľe nikdo nevidÄ›l, ano? :)<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div></div><span class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Jednak jsem to zmiĹoval jako rychlou ukázku C-G jakoĹľto konstruktu pro<br>
studenty (kde se navc netvořà profesionálnà kód), za druhé mohu dostat<br>
všechny potĹ™ebnĂ© informace vÄŤ. stavovĂ˝ch a za tĹ™etĂ... kam se vám podÄ›l<br>
EAFP (<a href="https://docs.python.org/2/glossary.html" target="_blank">https://docs.python.org/2/glossary.html</a>)?<br>
<span><br></span></blockquote><div><br></div></span><div>Tu poznámku o EAFP jsem nepochopil.<br></div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>
<br>
> Mimochodem v python3 uz reduce ani neni builtin (byl presunuty do<br>
> functools) a i Guido to vidi obdobne:<br>
> <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=98196" target="_blank">http://www.artima.com/weblogs/viewpost.jsp?thread=98196</a><br>
<br>
</span>S tĂm souhlasĂm, nic proti. Sám jsem psal, Ĺľe ji pouĹľĂvám zĹ™Ădka.<br>
<br>
DÄ›kuji za diskusi, štvete mÄ› jen malinko. :-)<br></blockquote><div><br></div></span><div>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.<span class="HOEnZb"><font color="#888888"><br>-- <br></font></span></div><span class="HOEnZb"><font color="#888888"><div>Radek <br></div></font></span></div></div></div>
</blockquote></div><br></div></div>