Pitão

Tutorial de fechamentos em Python

Tutorial de fechamentos em Python
Um encerramento é um método ou função interno aninhado que reconhece e tem o privilégio de usar as variáveis ​​mesmo após a função externa terminar de ser executada no escopo local em que foi criada. Uma variável deve ser de uma função externa ou escopo e não é certamente limitada no espaço local a ser usada. Existem três recursos de um encerramento Python, estes são os seguintes:

Função Aninhada

Você primeiro tem que entender o que é um método aninhado. Uma função aninhada pode ser definida como um método especificado em outro método. Funções recursivas podem atingir as variáveis ​​do escopo externo. Para alterar as variáveis ​​não locais, nós as definimos especificamente como não locais por meio de palavras-chave não locais porque são, por natureza, somente leitura. Então, primeiro, dê uma olhada na função aninhada realizada no Spyder Python 3.

Definimos duas funções: a externa e a interna. Na função externa, declaramos uma variável com algum valor de texto nela.

def outer_func ()
msg = 'Hy! Eu sou Aqsa Yasin '

Esta variável foi impressa na função interna usando uma instrução de impressão. A função interna é então retornada, que é uma função aninhada, e depois disso, a função externa foi chamada.

def inner_func ()
imprimir (msg)
return inner_func ()
inner_func ()

Se você não usar a palavra-chave return para retornar a função interna, ela ainda retornará o mesmo resultado.

Quando você executa este código simples, ele retorna o texto, definido como o valor na variável 'msg'.

Resultado: Hy! Eu sou Aqsa Yasin

Agora defina o mesmo tipo de função aninhada sem palavra-chave de retorno e passando variável 'msg' no parâmetro, e você obterá a mesma saída.

Resultado: Olá

Função de fechamento simples

Use o mesmo código, com uma pequena mudança nas duas últimas linhas. Com o barbante 'Olá', a show_msg () método foi invocado e o método retornado foi vinculado à palavra 'outro'. Durante a chamada outro(), o texto 'Olá' ainda foi lembrado, enquanto o show_msg () método já havia sido executado em execução. Certifique-se de adicionar a variável 'msg' dentro da função externa.

Quando você executa este código, ele mostra que a função interna, que é uma mostrar(), foi atribuído à variável 'outro'.

Resultado: .mostrar em 0x0000020CCED4D820>

Você pode simplesmente imprimir o nome de uma função atribuída a variável 'outro' como:

imprimir (outra.__nome__)

Irá mostrar o nome de uma função.

Resultado: show

Agora, se você quiser executar essa variável como uma função, como outros métodos, você pode fazer isso adicionando parênteses e chamando-a assim:

outro = show_msg ("Olá")
outro()
outro()

Você pode ligar quantas vezes quiser.

Quando você executa este código, ele exibe algo assim:

Resultado:

Olá

Olá

Olá

Agora você pode ver que mesmo após o término da execução da função externa, a função interna ainda se lembra das variáveis ​​e outras coisas que foram criadas ou definidas no espaço local.

Função de fechamento usando parâmetros

Agora, adicionamos parâmetros ao passar uma variável na função externa como:

def show_msg (msg)

O valor passado para o parâmetro de função externa será atribuído a uma variável definida nesta função externa como:

Message = msg

Passe alguns valores de string nas variáveis ​​recém-criadas na última linha, como:

func1 = show_msg ('Hi')
func2 = show_msg ('Olá')

Agora você tem que chamar essas funções assim:

func1 ()
func2 ()

Você obterá a seguinte saída mostrada na imagem do editor spyder:

No Python, este processo, pelo qual todos os dados (Olá ou Olá para este cenário) são anexados ao script, é denominado Closure.

Multiplicação simples usando Python Closure

Nós definimos duas funções. Um é externo, que tem um multiplicador definido, e o interno, no qual o valor será passado ao chamar a função. Na função externa, declaramos uma variável com um valor multiplicador definido passado nela. Este valor multiplicador 'n' foi multiplicado por algum valor 'x' que é passado na instrução de impressão para a função interna. A função interna é então retornada, que é uma função aninhada, e depois disso, as variáveis ​​foram chamadas uma após a outra nas instruções de impressão.

def out_multiply (n):
def in_multiply (x):
retornar x * n
retornar in_multiply

Agora a nova variável atribuiu algum valor a ser passado no parâmetro da função externa. Este valor será salvo na variável 'n', que é um multiplicador definido na função externa:

times3 = out_multiply (3)
times5 = out_multiply (5)

Essas variáveis ​​serão atribuídas com mais valores, que serão salvos no 'x' variável definida na função interna que precisa ser multiplicada pelo multiplicador 'n'. Quando imprimimos a variável nomeada como 'times', uma função com algum valor inteiro 'x' atribuído entre parênteses fará com que se multiplique pelo valor da função externa 'n'.

O primeiro vai saída 27 ao executar a instrução de impressão porque variável 'n' tem 3 como um multiplicador, e demos 9 como outro inteiro a ser multiplicado.

imprimir (times3 (9))

O segundo vai saída 15 ao executar a instrução de impressão porque a variável 'n' tem 3 como um multiplicador, e demos 5 como outro inteiro a ser multiplicado.

imprimir (times5 (3))

O último vai saída 30 durante a execução de uma instrução de impressão porque chamou recursivamente tempos para a variável de função. Na primeira vez, vezes 'n' tendo 3 como um multiplicador, que será multiplicado por um inteiro 2. Na multiplicação, ele irá imprimir 6. Agora, este 6 será usado como um valor, então passado como um argumento para a função variável dos tempos, onde o 'n' multiplicador variável é 5. Então quando 5 é multiplicado por 6 vai dar saída 30.

imprimir (times5 (times3 (2)))

Você pode ver a saída no console do editor Spyder.

Conclusão

Os fechamentos podem proibir o uso de valores globais e têm uma forma de ocultação de dados. Pode fornecer uma abordagem orientada a objeto ou entidade para o problema também. Esperançosamente, após seguir este guia, você será capaz de adquirir os fundamentos do fechamento do Python.

5 melhores jogos de arcade para Linux
Hoje em dia, os computadores são máquinas sérias usadas para jogos. Se você não pode obter a nova pontuação máxima, você saberá o que quero dizer. Nes...
Batalha por Wesnoth 1.13.6 Desenvolvimento lançado
Batalha por Wesnoth 1.13.6 lançado no mês passado, é o sexto lançamento de desenvolvimento no 1.13.série x e oferece uma série de melhorias, principal...
Como instalar o League Of Legends no Ubuntu 14.04
Se você é fã de League of Legends, esta é uma oportunidade para testar o funcionamento de League of Legends. Observe que LOL é suportado no PlayOnLinu...