O que significa pythônico? [fechadas]

88

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?

Jon
fonte
11
O Zen de Python , O que é Pythônico , etc ...
Martin Tournoij
Esta é uma questão fora do tópico. Você poderia ter fornecido um pequeno exemplo de código para torná-lo mais no tópico.
ρss

Respostas:

103

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 thisna linha de comando fornece um resumo dos princípios do Python. Menos conhecido é que o código-fonte do import thisé decididamente, e por design, impotônico! Dê uma olhada nele para ver um exemplo do que não fazer.

James
fonte
26
A propósito, o código-fonte para "importar isto" está aqui: github.com/python/cpython/blob/master/Lib/this.py
Gautam
Qual seria um exemplo em um campo diferente? Gosta de cozinhar, projetar, dirigir ..?
Daniel Springer,
2
Para obter um exemplo de um código mais complexo, uma implementação "impotônica" da cifra de Vigenere torna-se progressivamente mais "pítônica" nesta resposta (divulgação: meu código e opiniões): stackoverflow.com/questions/2490334/…
Nick
18
Acho que devo deixar um comentário aqui, dado o meu nome de usuário
Pythonic
Também vale a pena notar que o termo geral é "idiomático"
Louis Maddox