函式物件
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()
# 裝飾器的語法糖