Aulas do bloco

← Aulas

PythonTrilha · etapa 91h30

Primeiras funções: `def`, parâmetros, retorno e docstrings

Vídeos desta etapa, na ordem do portal:

  1. Funções · 14 min
  2. Parâmetros e argumentos · 14 min
  3. Argumentos nomeados · 16 min
  4. Parâmetros com valor padrão · 15 min
  5. Retorno de valores · 12 min
  6. Docstrings · 19 min
Use o número do vídeo e o horário indicado como referência nos arquivos locais.

A etapa anterior trabalhou listas e repetições com for e range(). Agora você aprende a organizar uma tarefa em uma função própria com def, passar valores por argumentos, devolver resultados com return e documentar a função com uma docstring.

O que foi falado

  1. Função com def e chamada com ()

    Vídeo 1 · 00:03:58

    Função é um trecho com nome que faz uma tarefa e pode ser reutilizado sem copiar código. Você cria com def, nome, parênteses e dois-pontos, e escreve o corpo indentado, como em if e for. Definir não executa o corpo: é preciso chamar depois, como cumprimenta_usuario(). Você já conhece chamadas como print(), input() e range(); def permite criar suas próprias funções.

    Python
    def cumprimenta_usuario():
        print("Olá")
    
    cumprimenta_usuario()

    Saída

    Olá
  2. Parâmetro no def e argumento na chamada

    Vídeo 2 · 00:01:46

    Parâmetro é o nome entre parênteses no def, como nome_usuario, que a função usa por dentro. Argumento é o valor entre parênteses na chamada, como "Marcelo", que entra naquele parâmetro. Cada chamada pode passar um valor diferente e a função roda com aquele valor. Sem passar o argumento esperado, a chamada quebra.

    Python
    def cumprimenta_usuario(nome_usuario):
        print(f"Olá, {nome_usuario}")
    
    cumprimenta_usuario("Marcelo")
    cumprimenta_usuario("Ana")

    Saída

    Olá, Marcelo
    Olá, Ana
  3. Argumentos posicionais e nomeados com nome=valor

    Vídeo 3 · 00:06:57

    Na chamada posicional, cada valor se liga ao parâmetro da mesma posição, então a ordem precisa ser a da definição. Na chamada nomeada você escreve nome=valor, como titulo="Sr", e a ligação é pelo nome, então a ordem pode mudar. Dá para misturar, mas todo posicional vem primeiro, como mostra("Ana", titulo="Sra"). Colocar posicional depois de nomeado, como mostra(titulo="Sra", "Ana"), dá erro na IDE e na execução.

    Python
    def apresenta(nome, titulo):
        print(f"{titulo} {nome}")
    
    apresenta(titulo="Sra", nome="Ana")

    Saída

    Sra Ana
  4. Valor padrão com = e parâmetro opcional

    Vídeo 4 · 00:02:10

    Você define o padrão no def com nome=valor, como bebida="água", e se a chamada omitir, ele usa esse valor. Parâmetro sem padrão fica no início e com padrão no fim, o contrário dá erro de sintaxe. Para pular um padrão do meio e dar valor só ao último, use nomeado, como escolhe("pizza", sobremesa="sorvete"). Para opcional como nome do meio, use padrão vazio "" e teste com if para montar com duas ou três partes.

    Python
    def mostra_menu(prato, bebida="água"):
        print(prato)
        print(bebida)
    
    mostra_menu("feijoada")
    mostra_menu("feijoada", "suco")

    Saída

    feijoada
    água
    feijoada
    suco
  5. return devolve resultado para usar depois

    Vídeo 5 · 00:02:18

    Imprimir dentro mostra na tela mas não entrega valor para o resto do programa. Com return, como return nome_completo, a função encerra e devolve o valor para o ponto da chamada. Você pode usar direto, como print(nome_completo("Ana", "Souza")), ou guardar em variável, como nome = nome_completo("Ana", "Souza"). No debugger dá para ver o desvio voltando para a linha da chamada e fazendo a atribuição.

    Python
    def nome_completo(primeiro, ultimo):
        return f"{primeiro} {ultimo}"
    
    nome = nome_completo("Ana", "Souza")
    print(nome)

    Saída

    Ana Souza
  6. Docstring com """ e ajuda com help()

    Vídeo 6 · 00:04:13

    Docstring é a primeira string da função, por convenção entre """, que explica o que faz, parâmetros e retorno. Ela não muda a execução, mas aparece em help() e no popup da IDE ao passar o mouse. Escrever str para tipo esperado, como nos parâmetros, ajuda quem vai chamar. É o jeito padrão de documentar para outro programador entender sem ler o corpo.

    Python
    def nome_completo(primeiro, ultimo):
        """Junta primeiro e ultimo e devolve o nome."""
        return f"{primeiro} {ultimo}"
    
    help(nome_completo)

    Saída

    Help on function nome_completo in module __main__:
    
    nome_completo(primeiro, ultimo)
        Junta primeiro e ultimo e devolve o nome.

Conceitos da aula

  • print()
  • input()
  • range
  • função
  • def
  • chamar função
  • parâmetro
  • argumento
  • argumento nomeado
  • valor padrão
  • return
  • docstring

Reforce este assunto

9 exercíciosComeçar →