Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Closures | Escopo de Variáveis, Funções Aninhadas e Closures
Conceitos de Programação Funcional em Python

bookClosures

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.

12345678910
def 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())
copy

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.

question mark

O que torna uma função um closure?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 8

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 3. Capítulo 8
some-alt