Python學習,裝飾器,元類
阿新 • • 發佈:2018-12-31
# 函式也是物件,可以把函式賦值給變數,使用變數呼叫函式
def func(x):
return x+1
plus_one = func
print(plus_one(1))
#%%
# 裝飾器的思想是裝飾函式的物件,使函式在自身程式碼不變的情況下,增加一些普適的功能
import time
def decorator1(func):
# 這個指的就是包裝在外面的函式
#*args:(表示的就是將實參中按照位置傳值,多出來的值都給args,且以元組的方式呈現)
# **kwargs:(表示的就是形參中按照關鍵字傳值把多餘的傳值以字典的方式呈現)
def wrapper(*args, **kwargs):
t = time.time()
ans = func(*args, **kwargs)
t = time.time() -t
return ans,t
return wrapper
#%%
import time
import wrapt
@wrapt.decorator
def decorator(func,instance,args,kwargs):
t = time.time()
ans = func(*args, ** kwargs)
t = time.time() -t
return ans,t
@decorator
def func():
for _ in range(10**6):
x =0
return "Done"
print(func())
#%%
# 類即物件,函式即物件,類可以賦值給白能量,通過變數可以建立類的例項
# 這個叫做meta class,用於獲取最高控制權
class Class:
def __init__(self):
self.x =1
one = Class
print (one().x)