函数对象、装饰器、闭包函数
函数对象
Python中一切皆对象
【1】可以直接被引用
定义一个函数用一个新的变量名来存,用新的变量名来调用
【2】可以作为元素被储存
功能字典的函数地址
【3】函数可以作为参数传递给另一个函数
将函数的内存地址作为参数传递
【4】函数的返回值可以是函数
直接将函数的内存地址返回
闭包函数
- 闭包函数就是对外界作用域有引用的函数
- 内嵌函数对外部函数有引用,那这个内嵌函数就叫闭包函数
def outer():
a = 1
def inner():
print(a)
整个outer就叫做闭包函数
闭包函数的应用
- 装饰器
- 函数工厂模式
- 封装
闭包函数就是内嵌函数对外部函数作用域有引用的函数
def outer():
def inner():
print("hello world")
return inner
res = outer()
print(res())
time模块
可以用来获取时间
import time
def add():
time.sleep(3)
def delete():
time.sleep(4)
def outer(func):
func = func
def inner():
start_time = time.time()
func()
end_time = time.time()
print(f"{end_time - start_time} s")
return inner
add = outer(add)
add()
装饰器就是在不改变原来函数调用方式的基础上增加额外的新功能
import time
def outer(func):
func = func
def inner():
start_time = time.time()
func()
end_time = time.time()
print(f"{end_time - start_time} s")
return inner
@outer # add = outer(add)
def add():
time.sleep(3)
def delete():
time.sleep(4)
add()
# 装饰器的语法糖
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?