Diskuze: Jaké je podle vás "pythonic" programování?

Python Python Jaké je podle vás "pythonic" programování?

Avatar
hanpari
Redaktor
Avatar
hanpari:

Ahoj všichni,

vzhledem k tomu, že jsem se často setkal s výhradami ve smyslu, že kód není dostatečně pythonský, a vzhledem k tomu, že někdy mám dojem, že si to každý vykládá po svém, rád bych věděl, co si místní uživatelé představují pod tímto pojmem.

Jen bych poprosil o vlastní názory a dojmy. Zajímala by mne vaše osobní pojetí pojmu "pythonic". Oficiální definici bych si určitě našel sám :)

 
Odpovědět 29.3.2015 10:05
Avatar
jan.ruzicka01
Redaktor
Avatar
Odpovídá na hanpari
jan.ruzicka01:
Jako Python-like si představuju (ale neříkám, že to vždy používám)
Pochopení seznamu (list comprehension): [function(x) * x for x in numberList if x % 2 == 0]
Formátování řetězce operátorem: print("%s %s!" % (msg, target))
Zjištění přítomnosti podstringu (substring): if "blah" in string nebo if "blah" not in string
Paralelní přiřazování: a, b, c = b, c, a
Více-return: return val1, val2, val3, ..., valX
Generátory (narozdíl od comprehension se generuje dynamicky): (z for z in x for x in y)
Lambda funkce (které už nejsou tolik Python-like, skvěle se dají použít u dole zmíněných funkcí): lambda x: x*x
Další vlastnosti co jsou spíš funkcionální, které se dají nahradit pomocí list comprehension
filter(): filter(my_fun­ction_filter, myList)
map(): map(my_function, myList)
zip(): zip(['a', 'b', 'c'], [1, 2, 3])
Editováno 30.3.2015 15:18
Nahoru Odpovědět  +1 30.3.2015 15:15
';' je má jediná noční můra...
Avatar
hanpari
Redaktor
Avatar
hanpari:

Díky moc!

Pěkný seznam, za sebe vlastně nemám co doplnit. Snad kromě drobností jako

if neco: místo if neco != 0:

nebo, když už jsme u toho rozbalování,

a, *zbytek = [1,2,3,4,5,6]

Jedině snad, co mi tam chybí, je vhodné využití vestavěných datových struktur. Jako jsou list, tuple, dict a tolik bůhvíproč přehlížený set, popř. frozenset.
A také využívání modulů jako itertools a obecně baterií.
Z těch pokročilejších snad ještě closures, deskriptory a dekoratéry.

Ale rozhodně se přidejte další, je to takové odpočinkové téma :)

Editováno 30.3.2015 16:47
 
Nahoru Odpovědět  +1 30.3.2015 16:45
Avatar
jan.ruzicka01
Redaktor
Avatar
Odpovídá na hanpari
jan.ruzicka01:

Dekorátory v Pythonu jsou, ale jelikož jsem se o ně moc nezajímal, nevím, zda to jsou ty, co hledáš.

Nahoru Odpovědět 31.3.2015 14:31
';' je má jediná noční můra...
Avatar
hanpari
Redaktor
Avatar
Odpovídá na jan.ruzicka01
hanpari:

Jo, přesně ty, akorát je nehledám, jen doplňuji k tvému seznamu :)

 
Nahoru Odpovědět 31.3.2015 15:40
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.