Pergunta

Qual é o propósito do cólon antes de um bloco em Python?

Exemplo:

if n == 0:
    print "The end"
Foi útil?

Solução

O cólon é lá para declarar o início de um bloco recortado.

Tecnicamente, não é necessário; Você poderia apenas travessão e-indent de quando o bloco é feito. No entanto, com base na Python koan “explícito é melhor do que implícito” (EIBTI ), acredito que Guido deliberadamente fez a obrigatoriedade de cólon, então qualquer afirmação de que deve ser seguido por extremidades código recuado em dois pontos. (Ele também permite one-liners se você continuar após os dois pontos, mas este estilo não é largamente utilizado.)

Ele também faz o trabalho de editores-o recuo auto sintaxe-aware mais fácil, que também contou na decisão.


Esta questão acaba por ser um Python FAQ , e eu achei uma de suas respostas por Guido aqui :

Por que os dois pontos necessários para o if / while / def / classe?

O cólon é necessária principalmente para melhorar a legibilidade (um dos resultados da linguagem ABC experimental). Considere o seguinte:

if a == b 
    print a

contra

if a == b: 
    print a

Observe como o segundo é um pouco mais fácil de ler. Aviso ainda mais como um cólon dispara o exemplo nesta resposta FAQ; é um uso padrão em Inglês.

Outra razão é menor que o cólon torna mais fácil para os editores com destaque de sintaxe; eles podem olhar para dois pontos para decidir quando recuo precisa ser aumentado em vez de ter que fazer uma análise mais elaborada do texto do programa.

Outras dicas

Considere o seguinte lista de coisas para comprar do supermercado, escrito em Pewprikanese.

pewkah
lalala
    chunkykachoo
    pewpewpew
skunkybacon

Quando li isso, eu estou confuso, são chunkykachoo e pewpewpew uma espécie de lalala? Ou que se chunkykachoo e pewpewpew são recuados, apenas porque eles são itens especiais?

Agora veja o que acontece quando meu amigo Pewprikanese adicionar dois pontos para me ajudar a analisar a lista melhor: (<- como este)

pewkah
lalala:   (<-- see this colon)
    chunkykachoo
    pewpewpew
skunkybacon

Agora é claro que chunkykachoo e pewpewpew são uma espécie de lalala.

Vamos dizer que há uma pessoa que está começando a aprender Python, que passa a ser sua primeira linguagem de programação para aprender. Sem dois pontos, há uma probabilidade considerável de que ela vai continuar pensando "estas linhas são recuados, porque estas linhas são como itens especiais.", E que poderia demorar um pouco para perceber que isso não é a melhor maneira de pensar em recuo.

razões Três:

  1. Para aumentar a legibilidade. O cólon ajuda o fluxo de código no bloco recuado seguinte.
  2. Para ajudar os editores de texto / IDEs, eles podem automaticamente recuar a próxima linha se a linha anterior terminou com dois pontos.
  3. Para fazer a análise por python um pouco mais fácil.

Tanto quanto eu sei, é um design intencional para torná-lo mais óbvio, que o leitor deve esperar um recuo após os dois pontos.

Ele também faz construções como esta possível:

if expression: action()
code_continues()

Nota (como um comentarista fez) que este não é exatamente o padrão-ouro brilhando de bom estilo Python. Seria muito melhor ter um espaço em branco, não:

if expression: action()

code_continues()

confusão evitar. Eu só queria deixar claro, com o primeiro exemplo, que é possível escrever assim, já que ter o código para o if imediatamente após o cólon torna possível para o compilador para entender que a próxima linha deve não ser recuado.

De acordo com Guido Van Rossum, o inventor Python, a idéia de usar dois pontos para tornar a estrutura mais aparente é inspirado em experiências anteriores com um predecessor Python, a linguagem ABC, que também alvo os novatos. Aparentemente, em seus primeiros testes, os alunos iniciantes progrediu mais rapidamente com cólon do que sem ele. Leia toda a história no blogue história pós python de Guido.

http: // python-história .blogspot.com / 2009/02 / início de língua-design-e-development.html

E sim, o cólon é útil em one-liners e é menos irritante do que o ponto e vírgula. Também guia de estilo por muito tempo recomendado quebra em várias linhas apenas quando ele termina com um operador binário

x = (23 + 
     24 + 
     33)

A adição de cólon fez olhar instrução composta da mesma forma para a uniformidade maior estilo.

Há um 'colonless' codificação para CPython, bem como dialeto colonless, chamado de cobra. Aqueles não pegar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top