Funções Python

Programação de Funções

Uma função é um bloco de código organizado que é usado para executar uma única tarefa. Elas fornecem melhor modularidade para sua aplicação e reutilização.

Argumentos de Função

Uma função pode receber argumentos e valores de retorno:

No exemplo a seguir, a função say_hello recebe o argumento “name” e imprime uma saudação:

# Define uma função que aceita um argumento
def say_hello(name):
   print(f'Hello {name}')

# Chama a função com um argumento de string
say_hello('Carlos')
Hello Carlos
say_hello('Wanda')
Hello Wanda
say_hello('Rose')
Hello Rose

Argumentos de Palavra-Chave (Keyword Arguments)

Para melhorar a legibilidade do código, devemos ser o mais explícitos possível. Podemos conseguir isso em nossas funções usando Keyword Arguments:

# Função com múltiplos parâmetros
def say_hi(name, greeting):
   print(f"{greeting} {name}")

# Argumentos posicionais: a ordem importa
say_hi('John', 'Hello')
Hello John
# Argumentos de palavra-chave: a ordem não importa, mais legível
say_hi(name='Anna', greeting='Hi')
Hi Anna
Quiz

Faça login para responder este quiz e acompanhar seu progresso de aprendizagem

Qual é a principal vantagem de usar argumentos de palavra-chave em funções Python?
A. Eles são executados mais rapidamente
B. Eles usam menos memória
C. Eles melhoram a legibilidade do código e a ordem não importa
D. Eles previnem erros

Valores de Retorno

Ao criar uma função usando a instrução def, você pode especificar qual deve ser o valor de retorno com uma instrução return. Uma instrução de retorno consiste no seguinte:

  • A palavra-chave return.

  • O valor ou expressão que a função deve retornar.

# Função que retorna um valor usando a instrução return
def sum_two_numbers(number_1, number_2):
   return number_1 + number_2

# Chama a função e armazena o valor retornado
result = sum_two_numbers(7, 8)
print(result)
15
Quiz

Faça login para responder este quiz e acompanhar seu progresso de aprendizagem

Qual palavra-chave é usada para retornar um valor de uma função em Python?
A. return
B. output
C. yield
D. exit

Escopo Local e Global

  • O código no escopo global não pode usar nenhuma variável local.

  • No entanto, um escopo local pode acessar variáveis globais.

  • O código no escopo local de uma função não pode usar variáveis em nenhum outro escopo local.

  • Você pode usar o mesmo nome para variáveis diferentes se elas estiverem em escopos diferentes. Ou seja, pode haver uma variável local chamada spam e uma variável global também chamada spam.

# Variável global: acessível em todos os lugares
global_variable = 'I am available everywhere'

def some_function():
    print(global_variable)  # Pode acessar a variável global
    # Variável local: só existe dentro desta função
    local_variable = "only available within this function"
    print(local_variable)

# Isso levantará NameError: local_variable não existe no escopo global
print(local_variable)
Traceback (most recent call last):
  File "<stdin>", line 10, in <module>
NameError: name 'local_variable' is not defined

A Declaração global

Se você precisar modificar uma variável global de dentro de uma função, use a instrução global:

# Usa a palavra-chave 'global' para modificar a variável global de dentro da função
def spam():
    global eggs  # Declara que estamos modificando a variável global
    eggs = 'spam'  # Isso altera a variável global

eggs = 'global'
spam()  # A função modifica a variável global
print(eggs)  # Imprime 'spam', não 'global'
spam
Quiz

Faça login para responder este quiz e acompanhar seu progresso de aprendizagem

Qual palavra-chave você deve usar dentro de uma função para modificar uma variável global?
A. nonlocal
B. global
C. extern
D. Nenhuma palavra-chave necessária

Existem quatro regras para saber se uma variável está em um escopo local ou global:

  1. Se uma variável estiver sendo usada no escopo global (ou seja, fora de todas as funções), ela é sempre uma variável global.

  2. Se houver uma instrução global para essa variável em uma função, ela é uma variável global.

  3. Caso contrário, se a variável for usada em uma instrução de atribuição na função, ela é uma variável local.

  4. Mas se a variável não for usada em uma instrução de atribuição, ela é uma variável global.

Funções Lambda

Em Python, uma função lambda é uma função anônima de linha única, que pode ter qualquer número de argumentos, mas pode ter apenas uma expressão.

Do Tutorial do Python 3

lambda é uma definição de função mínima que pode ser usada dentro de uma expressão. Diferente de FunctionDef, body contém um único nó.

Expressão de linha única

Funções Lambda só podem avaliar uma expressão, como uma única linha de código.

Esta função:

# Definição de função regular
def add(x, y):
    return x + y

add(5, 3)
8

É equivalente à função lambda:

# Função Lambda: função anônima definida em uma linha
# Sintaxe: lambda argumentos: expressão
add = lambda x, y: x + y
add(5, 3)
8
Quiz

Faça login para responder este quiz e acompanhar seu progresso de aprendizagem

O que é uma função lambda em Python?
A. Uma função que só pode ser chamada uma vez
B. Uma função que não recebe argumentos
C. Uma função que retorna múltiplos valores
D. Uma função anônima de linha única que pode ter qualquer número de argumentos, mas apenas uma expressão

Assim como as funções aninhadas regulares, as lambdas também funcionam como fechamentos lexicais (closures):

# Fechamento Lambda: função lambda que captura variável do escopo externo
def make_adder(n):
    return lambda x: x + n  # Lambda captura 'n' da função externa

# Cria funções que adicionam valores diferentes
plus_3 = make_adder(3)  # Retorna lambda que adiciona 3
plus_5 = make_adder(5)  # Retorna lambda que adiciona 5

plus_3(4)  # Retorna 4 + 3 = 7
7
plus_5(4)
9
Quiz

Faça login para responder este quiz e acompanhar seu progresso de aprendizagem

O que um fechamento lambda permite que você faça?
A. Capturar variáveis do escopo externo
B. Modificar variáveis globais sem a palavra-chave global
C. Retornar múltiplos valores
D. Executar código de forma assíncrona