Indentação do código no Python

A indentação é muito importante para o desenvolvedor Python.
Ela exerce um papel que vai além do visual e de facilitar a leitura do código.
Ocorre que alguns elementos, como as funções do Python, não têm “delimitadores” que indicam explicitamente seu começo e fim.
O código de uma função, por exemplo, não fica envolto em chaves {}, como você já deve ter observado em outras linguagens.
O único delimitador são os ‘ : ‘ (dois pontos), além da própria indentação.
No exemplo, que segue, definimos a função fib()
Note que os “>>>” indicam que código foi digitado e executado dentro de uma shell Python.

>>> def fib(n):
>>>     a, b = 0, 1
>>>
>>>     while a < n:
>>>         print(a, end=' ')
>>>         a, b = b, a+b
>>>     print()
>>>
>>> fib(1000)

Baseado no exemplo acima:

  1. blocos de código são definidos pela sua indentação.
    Quando falamos em “blocos de código”, nos referimos às funções, declarações if, laços (ou loops) while, for etc.
    No exemplo acima, temos um laço while, claramente definido pela indentação. Observe.
    Isto significa que espaços em branco não devem ser digitados à toa, por que serão levados em consideração pelo interpretador/compilador. Eles precisam ser consistentes.
    Ao final, a primeira linha fora da indentação, já não faz parte da função, portanto.
  2. As declarações while também são seguidas de um bloco de código. Enquanto expressão definida na linha do while for verdadeira, o bloco indentado será executado. Caso contrário, o interpretador sai do bloco.
  3. Você pode usar linhas em branco dentro do seu código de blocos. Elas não serão consideradas pelo interpretador e não servem para finalizar uma função, por exemplo.
    Portanto, se uma linha em branco puder acrescentar legibilidade do seu código, sinta-se à vontade para usar.
    Apenas preste atenção na indentação e siga escrevendo o seu código.

O Python usa quebras de parágrafos (carriage returns) para separar declarações, além de ‘ : ‘ (dois pontos) e indentação para diferenciar blocos de código.

Este requisito do Python, ajuda a criar uniformidade visual no código escrito, mesmo que por programadores diferentes.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 48 outros assinantes

O que são objetos no Python?

A resposta curta para esta pergunta é: tudo.
De fato, tudo é objeto para o Python, uma linguagem de programação concebida dentro da “filosofia” da orientação a objetos.
Tudo pode ter atributos e métodos.
Todas as funções têm um atributo __doc__ embutido — que retorna a docstring definida dentro do código fonte da função.
O módulo sys é um objeto que, entre outras coisas, tem um atributo chamado path (caminho).
Claro que, diferentes linguagens de programação podem dar significados (levemente) diferentes para o termo “objeto”.
Para algumas linguagens, todos os objetos precisam ter atributos e métodos. Para outras, o conceito implica em que todos os seus objetos são subclasses.
Já no Python, a definição é mais flexível — alguns objetos não possuem atributos ou métodos, mas podem tê-los.
Também, nem todos os objetos podem ser subclasses.

No sentido de que os conceitos podem ser aplicados a uma variável ou passado como argumento a uma função, no Python tudo é objeto.

As funções são objetos de primeira classe, bem como os módulos.
Você pode passar uma função como argumento para outra função, por exemplo.
As classes também são objetos de primeira classe, o que se estende às suas instâncias.
Para não restar dúvidas, strings também são objetos, bem como as listas etc.
Tudo é objeto no Python.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 48 outros assinantes

Use as docstrings para documentar seu código Python

Se você está lendo isso, provavelmente sabe o quanto é importante documentar seu trabalho, desde o início.
Depois de escrito, o código ainda vai ser lido inúmeras vezes.
Programadores experientes conhecem bem a situação de revisitar código escrito meses atrás e — se não estiver bem documentado — ficar coçando a cabeça para entender “o que diabos esta porcaria faz?”
O Python facilita escrever código legível e você só precisa se aproveitar disso.
Um destes recursos são as documentation strings ou texto de documentação — ou docstrings.

Quando posicionada adequadamente, dentro de uma função, a docstring pode informar o que a função faz e como usar corretamente seus parâmetros.
Em editores e IDEs avançadas, o texto da docstring passará a ser exibido a cada vez que a função for invocada dentro do código — como uma ajuda sensível ao contexto.
python docstrings in komodo editor
Na figura, acima, é possível ver o exemplo dentro do Komodo Editor.
Use 3 aspas simples para iniciar uma docstring e, novamente, para finalizar.
Veja um exemplo:

def minha_funcao(parametro=True):
    ''' texto de documentação específico da função minha_funcao
    que leva um único parâmetro, que é verdadeiro por padrão
    '''
    
minha_funcao()

As aspas triplas podem ser usadas aonde você quiser. Serão mais comumente encontradas em docstrings.
Mas você pode usá-las apenas para inserir comentários em múltiplas linhas, em qualquer ponto do seu codigo.

As aspas simples triplas informam ao interpretador Python que se trata de uma string em múltiplas linhas.
Tudo o que você quiser escrever cabe dentro deste espaço — o que inclui, além do texto, as quebras de linha, os espaços em branco ou outras aspas.
Se você for usar docstrings para documentar uma função, tenha em mente que elas devem ser iniciadas logo abaixo da função, como no exemplo dado, logo acima.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 48 outros assinantes

Como declarar funções no Python

Funções são uma forma bastante conveniente de dividir seu código em vários pequenos (ou não) blocos de códigos.
Tal como qualquer outra linguagem de programação, o Python tem suporte a funções.
Com o uso deste recurso, é possível enxugar significativamente a quantidade de código dentro dos scripts principais de um sistema, o que os torna mais fáceis de entender e manter.
São também um meio de compartilhar código entre programadores, poupando todo mundo de recriar código para uma mesma tarefa.
Quando você precisa de uma, no Python, você a declara, com o comando “def” (define).
Veja um exemplo:


def tamanho_aprox(tam, tipo=True):

A palavra-chave def deve ser usada para iniciar toda declaração de uma nova função.
Depois do nome da função, segue (opcionalmente) alguns argumentos entre parênteses, que são separados por vírgulas.

Quando você precisa de uma função, no Python, basta declará-la com def.

python declarar função

Você pode experimentar criar uma função dentro da Python shell:

>>> def fun_hello():
...     print("olá, mundo!")
... 

>>> fun_hello()
olá, mundo!

>>> 

No próximo exemplo, vou mostrar uma função de felicitação pelo aniversário.
Como eu quero que a felicitação seja personalizada, a função irá aceitar o nome do aniversariante através do parâmetro.

>>> def felizAniv(aniversariante):
...     print("Feliz aniversário, "+aniversariante+"!")
... 
>>> felizAniv('Justin')
Feliz aniversário, Justin!

>>> felizAniv('Capitão')
Feliz aniversário, Capitão!

>>> 

Que tal adicionar a idade?

>>> def felizAniv(aniversariante,anos):
...     print("Feliz aniversário, "+aniversariante+"!")
...     print("Você acabou de fazer "+str(anos)+" anos de idade.")
... 

>>> felizAniv('Capitão',72)
Feliz aniversário, Capitão!
Você acabou de fazer 72 anos de idade.

>>>

Referências

http://anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/functions.html.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 48 outros assinantes

Primeiros passos na shell do Python

É na shell do Python que você pode começar a explorar a sintaxe dos comandos da linguagem.
Também é possível obter ajuda sobre os comandos e depurar programinhas curtinhos.
Existe uma shell gráfica (GUI), chamada IDLE, que tem editor de textos, suporte a realce da sintaxe etc. — que será abordada melhor em outro post…
Abra a sua shell e faça algumas experiências:

python3

Como você pode ver, no exemplo abaixo, meu interpretador Python está na versão 3.x e roda em uma máquina Linux:

Python 3.5.3 (default, Jan 19 2017, 14:11:04) 
[GCC 6.3.0 20170118] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Não se preocupe com o fato de eu usar Linux nos meus exemplos.
O interpretador Python é universal e funciona do mesmo jeito em qualquer plataforma.

Os caracteres “>>>” indicam o prompt da shell.
É nesta linha que podemos dar comandos para serem interpretados.
Veja alguns exemplos:

>>> 15 + 3
18

Experimente pedir ao Python para escrever alguma coisa:

>>> print("olá, mundo!")
olá, mundo!

O modo ajuda do Python

Obtenha ajuda sobre Python dentro da shell, com a função help():

help()

Note que o prompt, no modo de ajuda muda para “help>”, para ajudar a lembrar que você não está dentro do interpretador Python — mas dentro do modo de ajuda dele.
A partir deste prompt é possível digitar comandos ou outros elementos da linguagem, para obter mais informações sobre eles.

help> print

No exemplo acima pedi ajuda sobre a função print().
Como resposta, o módulo exibe um texto assim:

Help on built-in function print in module builtins:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    
    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.
(END)

Para sair, tecle “q”.
E, para sair do módulo de ajuda, rode o comando “quit”.
Você também pode obter ajuda rápida, com a função help, sobre comandos, funções, objetos, classes etc.
Por exemplo, para obter ajuda sobre a classe “list”, use o help assim:

help(list)

Neste caso, o assistente exibe o texto na tela.
Para sair do “modo help”, tecle “q” — para voltar ao prompt do Python.
Se você já usou um terminal Bash (no Linux), vai perceber que o “modo help” do Python funciona semelhante a uma man page.

Rode um script Python com o interpretador

Você pode rodar qualquer script a partir do interpretador, direto no terminal:

python meuscript.py

No Windows, é mais parecido com isto aqui:

c:\python31\python.exe meuscript.py

Desta forma, não é necessário abrir uma shell para executar varias linhas de comandos — uma vez que podem ser agrupadas em um arquivo de script.
Aí é que começa a “programação de verdade”.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 48 outros assinantes