函数对象
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()
# 装饰器的语法糖
标签:闭包,outer,函数,add,time,装饰,def
From: https://www.cnblogs.com/yi416/p/18201639