Closures
Deslize para mostrar o menu
Closures vs. Funções Aninhadas
Uma função aninhada é qualquer função definida dentro de outra função. Funções aninhadas são úteis para organizar o código e limitar o escopo de funções auxiliares. No entanto, nem todas as funções aninhadas são closures.
Uma closure é um tipo especial de função aninhada. Closures são funções aninhadas que "lembram" e podem acessar variáveis do escopo da função que as envolve, mesmo após a execução da função externa ter terminado. Isso significa que closures podem manter estado entre múltiplas chamadas.
Pontos principais:
- Todas as closures são funções aninhadas;
- Nem todas as funções aninhadas são closures;
- Uma função aninhada se torna uma closure apenas se utilizar variáveis do escopo da função externa e essas variáveis ainda estiverem acessíveis após o retorno da função externa.
Essa distinção é importante para compreender como o Python gerencia o escopo de variáveis e como closures podem ser usadas para encapsular estado e comportamento juntos.
12345678910def make_greeter(name): def greet(): return f"Hello, {name}!" return greet greeter = make_greeter("Alice") print(greeter()) another_greeter = make_greeter("Bob") print(another_greeter())
Ao chamar make_greeter("Alice"), o Python cria uma nova função greet que lembra o valor de name como "Alice". Mesmo após a execução de make_greeter terminar, a função greet retornada ainda tem acesso à variável name de seu escopo original. Por isso, ao chamar greeter(), é exibido Hello, Alice!, e ao chamar another_greeter(), é exibido Hello, Bob!. Cada closure mantém sua própria cópia das variáveis necessárias.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo