闭包 closure

需要注意的是,
计算机可以看作是pure math的子集,这里只能提到一点皮毛,遇到了先行记录,等以后深入的时候再补充

先分析一下闭包是什么,然后通过看python,和js源码中的实现方式,来提升理解。
a function which closes over the environment(scope) in which it was defined

在函数中再嵌套一个函数,并且引用外部函数的变量

def outer(x):
    def inner(y):
        return x + y
    return inner

print(outer(6)(5))
-----------------------------
>>>11

python 装饰器(decorator)

def debug(func):
    def wrapper():
        print("[DEBUG]: enter {}()".format(func.__name__))
        return func()
    return wrapper

@debug
def hello():
    print("hello")

hello()
-----------------------------
>>>[DEBUG]: enter hello()
>>>hello

闭包的作用可以从他的概念上看出来,一个复杂函数内部的大量逻辑中,可能也有很多重复的处理逻辑部分,把这部门内容封装成复杂函数内部的函数,仅供复杂函数内部处理重复的逻辑,其实这就是闭包的作用吧,至于装饰器我感觉是正好闭包的实现结构符合了装饰器的结构,所以就用闭包来实现装饰器了

reference

python 装饰器详解

posted @   deadright  阅读(21)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示