Em muitos sites, frequentemente vejo comentários de que o código não é pítônico ou que existe uma maneira mais pítônica de atingir o mesmo objetivo.
O que pythônico significa neste contexto? Por exemplo, porque é
while i < someValue:
do_something(list[i])
i += 1
não pythônico enquanto
for x in list:
doSomething(x)
é pítônico?
Respostas:
Explorar os recursos da linguagem Python para produzir um código claro, conciso e de fácil manutenção.
Python significa código que não apenas possui a sintaxe correta, mas que segue as convenções da comunidade Python e usa a linguagem da maneira que deve ser usada.
Isso talvez seja mais fácil de explicar por exemplo negativo, como no artigo vinculado a outras respostas. Exemplos de código não-sintônico geralmente vêm de usuários de outras linguagens, que, em vez de aprender padrões de programação Python, como compreensões de listas ou expressões geradoras, tentam dominar os padrões mais comumente usados em C ou java. Os loops são exemplos particularmente comuns disso.
Por exemplo, em Java, posso usar
for i in (i; i < items.length ; i++) { n = items[i]; ... now do something }
Em Python, podemos tentar e replicar isso usando loops while, mas seria mais limpo de usar
for i in items: i.perform_action()
Ou mesmo uma expressão geradora
(i.some_attribute for i in items)
Então, essencialmente, quando alguém diz que algo não é sinistro, eles estão dizendo que o código poderia ser reescrito de uma forma que se encaixa melhor no estilo de codificação de pythons.
Digitar
import this
na linha de comando fornece um resumo dos princípios do Python. Menos conhecido é que o código-fonte doimport this
é decididamente, e por design, impotônico! Dê uma olhada nele para ver um exemplo do que não fazer.fonte