Home  >  Article  >  Backend Development  >  What are python closures?

What are python closures?

小老鼠
小老鼠Original
2023-10-30 16:53:302317browse

Python closures mainly include function closures and decorator closures. Detailed introduction: 1. Function closure refers to returning another function inside a function, and the returned function can access its internal variables. Such a returned function is a function closure. Function closures can be used repeatedly in the program, so they can be used to implement some functional encapsulation; 2. Decorator closure means that when using a decorator, the decorated function is not It is not called directly, but is wrapped inside a function and returns a new function. This new function is a decorator closure and so on.

What are python closures?

The operating system for this tutorial: windows system, python version 3.11.4, Dell G3 computer.

Closures in Python mainly include two types: function closures and decorator closures.

Function closure: Function closure means returning another function inside a function, and the returned function can access its internal variables. Such a returning function is a function closure. Function closures can be used repeatedly in the program, so they can be used to implement some functional encapsulation.

The following is a simple example:

def outer():  
    x = 10  
    def inner():  
        print(x)  
    return inner  
  
f = outer()  # 创建函数闭包  
f()  # 调用函数闭包

In this code, outer The function returns a closure of the inner function. We can call f() repeatedly to access the variable x in the closure.

Decorator closure: Decorator closure means that when using a decorator, the decorated function is not called directly, but is wrapped inside a function and returned a new function. This new function is a decorator closure. Decorator closures are often used to implement functionality enhancement, logging and other functions.

The following is a simple example:

def my_decorator(func):  
    def wrapper():  
        print("Before the function is called.")  
        func()  # 调用被装饰的函数  
        print("After the function is called.")  
    return wrapper  
  
@my_decorator  
def say_hello():  
    print("Hello!")  
  
say_hello()  # 调用装饰后的函数

In this code, my_decorator Is a decorator that wraps the say_hello function and returns a new function wrapper. When we call say_hello(), we actually call the decorator closure wrapper().

The above is the detailed content of What are python closures?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn