Pular para o conteúdo
Editor

Funções em Python: definir, chamar e retornar valores

Iniciante25 min6 exercícios80 XP

Este tutorial foi traduzido do original em inglês.Read in EnglishLeer en españolЧитать на русскомอ่านภาษาไทยAvisar sobre um erro de tradução

0/6 exercícios

Imagine que você tem uma receita favorita de panquecas. Todo domingo de manhã, você segue os mesmos passos: misturar a farinha, quebrar os ovos, despejar a massa, virar. Você não reinventa a receita a cada vez; só segue a que já conhece.

As funções em Python funcionam exatamente como receitas. Você escreve as instruções uma vez, dá um nome a elas e depois chama esse nome sempre que precisar que essas instruções sejam executadas de novo. Escreva uma vez, use em qualquer lugar.

Neste tutorial, você vai aprender a criar suas próprias funções, passar dados para elas e receber resultados de volta. No final, você vai estar escrevendo código limpo e reutilizável, como um desenvolvedor de verdade.

Como definir sua primeira função

Para criar uma função em Python, você usa a palavra-chave def, seguida de um nome, parênteses e dois-pontos. Tudo o que estiver indentado logo abaixo pertence a essa função.

Definindo uma função
def greet():
print('Hello there!')
print('Welcome to Python.')
Saída
(sem saída)

Se você executar o código acima, nada acontece. Isso porque definir uma função é como anotar uma receita. Nada vai para o fogo até você seguir os passos de fato.

Para executar a função de verdade, você a chama escrevendo o nome dela seguido de parênteses:

Chamando uma função
def greet():
print('Hello there!')
print('Welcome to Python.')
greet()
Saída
Hello there!
Welcome to Python.

Agora você vê a saída. São os parênteses () depois de greet que dizem ao Python para executar a função de fato. Sem eles, o Python só olha a receita, sem cozinhar.

Você pode chamar uma função quantas vezes quiser. Cada chamada executa todo o código de dentro da função, de cima para baixo.

Chamando uma função várias vezes
def greet():
print('Hello there!')
greet()
greet()
greet()
Saída
Hello there!
Hello there!
Hello there!

O que são parâmetros e argumentos?

Nossa função greet() sempre diz a mesma coisa. É como uma receita que só faz panqueca simples. E se você quiser panquecas de mirtilo? Você precisa de um jeito de passar os ingredientes.

Em Python, você passa dados para uma função usando parâmetros. Um parâmetro é um nome de variável listado dentro dos parênteses na definição da função. Quando você chama a função, o valor real que você envia se chama argumento.

Uma função com um parâmetro
def greet(name):
print('Hello, ' + name + '!')
greet('Alice')
greet('Bob')
Saída
Hello, Alice!
Hello, Bob!

Aqui, name é o parâmetro: um espaço reservado. Quando chamamos greet('Alice'), a string 'Alice' é o argumento: o valor real que ocupa esse espaço.

Como funcionam os valores de retorno?

Até agora, nossas funções só exibem coisas na tela. Mas, na maioria das vezes, você quer que uma função calcule algo e devolva o resultado para você. É isso que o return faz.

Pense assim: print() é como gritar a resposta em voz alta. return é como escrever a resposta em um papel e entregá-lo a quem perguntou.

Retornando um valor
def add(a, b):
return a + b
result = add(3, 5)
print(result)
Saída
8

A instrução return faz duas coisas: envia um valor de volta para o ponto onde a função foi chamada e sai da função na mesma hora. Nenhum código depois do return, dentro da mesma função, será executado.

O código depois do return nunca é alcançado
def add(a, b):
return a + b
print('This line never runs!')
print(add(3, 5))
Saída
8
Exibindo (efeito colateral)
def add(a, b):
    print(a + b)

# Can't reuse the result
add(3, 5)
Retornando (devolve um valor)
def add(a, b):
    return a + b

# Can store, reuse, combine
result = add(3, 5)
print(result * 2)

Usando vários parâmetros

As funções podem receber quantos parâmetros você precisar. É só separá-los com vírgulas. Na chamada, os argumentos são associados aos parâmetros na ordem: o primeiro argumento vai para o primeiro parâmetro, e assim por diante.

Uma função com três parâmetros
def introduce(name, age, city):
print(name + ' is ' + str(age) + ' years old and lives in ' + city + '.')
introduce('Alice', 25, 'New York')
introduce('Bob', 30, 'London')
Saída
Alice is 25 years old and lives in New York.
Bob is 30 years old and lives in London.

A ordem importa. Se você trocar os argumentos de lugar, vai obter resultados sem sentido ou um erro. introduce(25, 'Alice', 'London') tentaria usar 25 como nome.

O que são valores padrão de parâmetros?

Às vezes você quer que um parâmetro tenha um valor reserva: um padrão razoável, usado quando quem chama a função não informa nenhum. Você define isso com um sinal de = na definição.

Valor padrão de parâmetro
def greet(name, greeting='Hello'):
print(greeting + ', ' + name + '!')
greet('Alice')
greet('Bob', 'Hey')
Saída
Hello, Alice!
Hey, Bob!

Quando chamamos greet('Alice'), o parâmetro greeting usa seu valor padrão, 'Hello'. Quando chamamos greet('Bob', 'Hey'), substituímos o padrão por 'Hey'.

Funções podem chamar outras funções?

Podem, sim. Na verdade, essa é uma das ideias mais poderosas da programação. Você pode criar funções pequenas e focadas e depois combiná-las como blocos de montar.

Funções chamando funções
def square(n):
return n * n
def sum_of_squares(a, b):
return square(a) + square(b)
result = sum_of_squares(3, 4)
print(result)
Saída
25

Aqui, sum_of_squares chama square duas vezes. Cada função pequena faz um único trabalho simples. Juntas, elas resolvem um problema maior. Essa abordagem deixa seu código mais fácil de ler, testar e corrigir.

Usando uma função auxiliar
def is_even(n):
return n % 2 == 0
def describe_number(n):
if is_even(n):
return str(n) + ' is even'
else:
return str(n) + ' is odd'
print(describe_number(7))
print(describe_number(10))
Saída
7 is odd
10 is even

Exercícios práticos

Diga olá
Escreva o código

Escreva uma função chamada say_hello que receba um parâmetro name e exiba Hello, <name>! (com o ponto de exclamação). Por exemplo, say_hello('World') deve exibir Hello, World!.

# Define your function here
# Test it
say_hello('World')
say_hello('Python')
Preveja a saída
Preveja a saída

Leia o código abaixo com atenção. O que ele vai exibir? Digite a saída exata.

def double(x):
    return x * 2

result = double(7)
print(result)
print(double(3))
def double(x):
return x * 2
result = double(7)
print(result)
print(double(3))
Área de um retângulo
Escreva o código

Escreva uma função chamada area que receba width e height como parâmetros e retorne o produto deles (a área de um retângulo). Não exiba nada: apenas retorne o valor.

# Define your function here
# Test it
print(area(5, 3))
print(area(10, 7))
Corrija a função quebrada
Corrija o erro

Esta função deveria retornar o maior de dois números, mas, ao ser executada, exibe números e depois None. Corrija-a para que bigger(3, 7) retorne 7 e bigger(10, 5) retorne 10.

def bigger(a, b):
if a > b:
print(a)
print(b)
print(bigger(3, 7))
print(bigger(10, 5))
Conversor de temperatura
Escreva o código

Escreva uma função chamada celsius_to_fahrenheit que receba uma temperatura em Celsius e retorne o valor convertido em Fahrenheit. A fórmula é: F = C * 9/5 + 32. Retorne o resultado como float (a fórmula já produz um float naturalmente).

# Define your function here
# Test it
print(celsius_to_fahrenheit(0))
print(celsius_to_fahrenheit(100))
print(celsius_to_fahrenheit(37))
Crie uma calculadora de conceitos
Escreva o código

Escreva uma função chamada get_grade que receba uma nota numérica score (de 0 a 100) e retorne um conceito em letra, como string:

  • 90 ou mais: 'A'
  • 80 a 89: 'B'
  • 70 a 79: 'C'
  • 60 a 69: 'D'
  • Abaixo de 60: 'F'
  • # Define your function here
    # Test it
    print(get_grade(95))
    print(get_grade(83))
    print(get_grade(72))
    print(get_grade(65))
    print(get_grade(45))

    Tutoriais relacionados

    Este tutorial foi útil?