Fazer uma pesquisa no Google por "pythonic" revela uma ampla variedade de interpretações. A página da wikipedia diz:
Um neologismo comum na comunidade Python é pitônico, que pode ter uma ampla gama de significados relacionados ao estilo do programa. Dizer que o código é pitônico é dizer que ele usa bem os idiomas Python, que é natural ou mostra fluência na linguagem. Da mesma forma, dizer de um recurso de interface ou linguagem que é pitônico é dizer que funciona bem com os idiomas do Python, que seu uso se encaixa bem com o restante da linguagem.
Ele também discute o termo "não-tônico":
Por outro lado, uma marca do código não-sintônico é que ele tenta escrever código C ++ (ou Lisp, Perl ou Java) em Python - ou seja, fornece uma transcrição grosseira, em vez de uma tradução idiomática de formulários de outro idioma. O conceito de pitonicidade está fortemente vinculado à filosofia minimalista de legibilidade do Python e evita a abordagem "há mais de uma maneira de fazer isso". Código ilegível ou idiomas incompreensíveis não são sintonizados.
O que significa o termo "pitônico"? Como aprendo a aplicá-lo efetivamente na prática?
Respostas:
Eu descobri que a maioria das pessoas tem suas próprias interpretações do que ser "pitonico" realmente significa. Da Wikipedia:
Descobri que mais vezes do que não, mais exemplos "pitônicos" são realmente derivados de pessoas que tentam ser inteligentes com os idiomas do Python e (novamente, mais do que nunca) tornando seu código praticamente ilegível (o que não é Pythonic).
Desde que você adote os idiomas do Python e evite tentar usar estilos C ++ (ou outra linguagem) no Python, estará sendo Pythonic.
Conforme apontado pelo WorldEngineer, o PEP8 é um bom padrão a seguir (e se você usa o VIM, existem plugins disponíveis para a aprendizagem do PEP8).
Realmente, no final do dia, se a sua solução funciona e não é absolutamente horrivelmente insustentável e lenta, quem se importa? Mais vezes do que não, seu trabalho é realizar uma tarefa, não escrever o código python mais elegante possível.
Outra nota lateral (apenas a minha opinião, não hesite em downvote por causa disso;)): Eu também constatou a comunidade Python para ser preenchido com uma tonelada de ego (não que a maioria das comunidades não são , é apenas um pouco mais prevalente em comunidades como C e Python). Assim, combinar o ego com interpretações mal interpretadas de ser "pitônico" tenderá a produzir muita negatividade sem fundamento. Pegue o que você lê dos outros com um grão de sal. Atenha-se aos padrões e documentação oficiais e você ficará bem.
fonte
Pythonic é codificar idioma em Python. Significa usar estruturas e formatação que funcionam bem para Python do ponto de vista de programação, mas também do ponto de vista da comunidade. É muito parecido com o modo como a K&R define o padrão para o estilo de programação C por um longo tempo. Este guia mostra que você precisa codificar idioma em Python. O PEP 8 é mencionado nesse guia, portanto provavelmente vale a pena ler.
fonte
Escrevendo código "Pythonic" O IMHO está apenas fazendo uso efetivo dos recursos (V) HLL fornecidos pelo idioma. Como um exemplo onipresente,
Isso é muito pitonico. Lembro-me de quando comecei a aprender C # depois de meses apenas em Python,
de alguma forma me confundiu, mas demorei um minuto para retornar às minhas raízes C / C ++.
Outra maneira pitônica é usar lambdas.
realmente será impresso
l
em ordem decrescente.Depois, há a "digitação de pato" muito usada, mas muito menos compreendida - Se ela anda e fala como um pato, você a trata como um pato. Esta é vagamente relacionadas com interfaces em outras linguagens OO.
Também se usam métodos de programação funcional, quando aplicável, como o uso de map e red e são considerados pitônicos.
Vi uma resposta sendo postada enquanto eu digitava, e ele contém um link legal. PS: Não é que o seu conhecimento sobre Python seja limitado. Posso apostar que Python não era sua primeira língua e, portanto, (como a maioria de nós pythonistas), você terá que aprender a ficar "idiomático" com a cobra! Felicidades!
fonte
map
,reduce
,lambda
e tais são idiomática per se. Compreensões de lista e expressão de gerador são uma alternativa e muitas as preferem sempre que razoavelmente possível (em particular, elas são menos barulhentas quando você precisa de um lambda de qualquer maneira). Eles certamente têm seus usos e programas de programação funcionais em outros idiomas (decorador, por exemplo).(x, y) = (7, 'fuhrer')
- no entanto, quase sempre sou "corrigido" que sem parens é a melhor maneira de escrevê-lo!print(sorted(l, reverse=True))
, o que adicionalmente explicita ao leitor o que está acontecendo? Eu também consideraria seu primeiro exemplo discutível. São duas atribuições compactadas em uma; está tudo bem, mas eu não chamaria isso de muito pitonico. Os leitores precisam olhar mais tempo para o que fazem do que para ter duas atribuições.O código pitônico é:
fonte
Sempre que tentei aprender um novo idioma, descobri que a leitura de código por pessoas que conhecem o idioma como as costas da mão, olhando / perguntando sobre qualquer coisa que pareça estranha e tentando imitar seu estilo é a melhor coisa a fazer. Exemplos:
No Python, como estamos no assunto, achei os exemplos do Dive Into Python incrivelmente úteis para começar. Eles tendem a ensinar não apenas o básico do Python, mas enfatizar realmente o Python idiomático .
Ao aprender D, como a documentação não era boa no momento porque a linguagem era muito avançada, aprendi lendo o código na biblioteca padrão, especificamente, algumas das obras-primas de Andrei Alexandrescu .
Ao aprender C ++, herdei uma base de código de um bom programador de C ++ e aprendi muito sobre programação idiomática em C ++ por sua insistência em passar contêineres STL por referência, etc.
Em todos os idiomas, acho que navegar nas perguntas do StackOverflow sobre o idioma e observar o que as pessoas normalmente fazem para realizar coisas básicas ajuda.
fonte
Python não é Java pode dar alguns conselhos úteis. Não posso dizer mais sem saber em que tipo de problemas você está se deparando, mas é um conselho muito concreto para programadores provenientes de outra linguagem (neste caso especificamente java) sobre como fazer python de maneira diferente.
fonte
Alguém disse para parafrasear, para aprender o que é Pythonic, apenas bash fora algum código. Eu discordo disso. Se você gosta de escrever código altamente denso, isso não o torna mais pitonico.
Uma maneira de ajudá-lo a definir o que é Pythonic no que diz respeito a você, pergunte a si mesmo "Por que eu (significando que você) usaria a linguagem Python?" O que agrada a você sobre isso?
Para mim, é legibilidade e falta de compilação e código aberto (praticamente tudo isso). Posso carregar toneladas de bibliotecas e ler seu código-fonte com menos estresse sobre o licenciamento do que em muitos outros idiomas.
Para mim, Python é bonito visualmente. Guido (o criador do Python) também continua me provando, através de suas respostas no PEPS e nas discussões) que suas escolhas de como ele criou a linguagem são superiores às minhas próprias idéias de como ela deveria ter sido criada.
Para mim, um ótimo programador é alguém com habilidades bem informadas para tomar decisões sobre qual caminho seguir ao codificar. Para mim, o Python ajuda a fazer essas escolhas rapidamente.
Ao simplificar a sintaxe do código-fonte, permitindo a digitação com patos em vez da conversão explícita, e a expectativa de que os codificadores que revisam seu código "devam ser codificadores bem comportados" leva a algo que eu também chamo de "Pythonic"
Portanto, existem dois lados do que é pitônico. Um é sintático, o outro é a prática de. Como explicar o lado mais profundo do que é "pitonico" ..?
Em Python, não é grande coisa fazer isso: alist = ['one', 'two', 'three \ n'] alist.append ((1234, 'Atuple'))
e a tupla será adicionada à lista sem nenhuma preocupação com os tipos de objetos. A parte Pythonic não é que você PODE fazer isso, mas que seu código deve ESPERAR isso e apenas trabalhar / adaptar.
Tudo o que funciona no objeto -alist- deve ser escrito com a idéia de que algum outro codificador possa entrar e adicionar uma não-string à lista e que a adaptação do código-fonte pelo novo codificador não deve ser difícil de fazer. Afinal, esse é o benefício do tipo de pato.
fonte
Compre um livro recomendado. Leia-o. Deve fornecer uma boa base para o uso do idioma e de um mecanismo que atenda ao estilo da comunidade
fonte