闭包 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
闭包的作用可以从他的概念上看出来,一个复杂函数内部的大量逻辑中,可能也有很多重复的处理逻辑部分,把这部门内容封装成复杂函数内部的函数,仅供复杂函数内部处理重复的逻辑,其实这就是闭包的作用吧,至于装饰器我感觉是正好闭包的实现结构符合了装饰器的结构,所以就用闭包来实现装饰器了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理