Funções Python
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
Faça login para responder este quiz e acompanhar seu progresso de aprendizagem
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
Faça login para responder este quiz e acompanhar seu progresso de aprendizagem
returnoutputyieldexitEscopo 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
Faça login para responder este quiz e acompanhar seu progresso de aprendizagem
nonlocalglobalexternExistem quatro regras para saber se uma variável está em um escopo local ou global:
Se uma variável estiver sendo usada no escopo global (ou seja, fora de todas as funções), ela é sempre uma variável global.
Se houver uma instrução global para essa variável em uma função, ela é uma variável global.
Caso contrário, se a variável for usada em uma instrução de atribuição na função, ela é uma variável local.
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.
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
Faça login para responder este quiz e acompanhar seu progresso de aprendizagem
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
Faça login para responder este quiz e acompanhar seu progresso de aprendizagem