1.裝飾器功能:
在不修改原函式的情況下,增強函式功能
2.不帶引數的函式+不帶引數的裝飾器
(1)foo()被裝飾的函式
(2)show_time() 是裝飾器
# -*- coding:utf-8 -*-
import time
def show_time(func):
def inner():
start_time = time.time()
func()
end_time = time.time()
print("執行時間為:", end_time - start_time)
return inner
@show_time
def foo():
print("我是foo函式")
time.sleep(1)
foo()
3.帶引數的函式+不帶引數的裝飾器
# -*- coding:utf-8 -*-
import time
def show_time(func):
def inner(*args, **kwargs):
start_time = time.time()
func(*args, **kwargs)
end_time = time.time()
print("執行時間為:", end_time - start_time)
return inner
@show_time
def foo(something):
print("我在:", something)
time.sleep(1)
foo("看電視")
4.帶引數的函式+帶引數的裝飾器
# -*- coding:utf-8 -*-
# -*- coding:utf-8 -*-
import time
def show_time(func):
def inner(*args, **kwargs):
start_time = time.time()
func(*args, **kwargs)
end_time = time.time()
print(name)
print("執行時間為:", end_time - start_time)
return inner
return show_time
def foo(something):
print("我在:", something)
time.sleep(1)
foo("看電視")
附加的解釋:1.函式:
(1)函式名可以作為引數
(2)函式名可以作為返回值
(3)函式名可以賦值
2.閉包:函式內部的函式,對巢狀作用域的變數進行引用,那麼這個內部函式被稱為閉包(inner函式就是閉包)
python3裝飾器 高階
作用 優化裝飾器 from functools import wraps 匯入wraps def wraps f wraps的語法糖 def inner args,kwargs ret f args,kwargs return ret return inner deff1 print hello,w...
python3 深入裝飾器
def outer c def inner uname print 我是 end c uname return inner outer def fun 1 uname print f 北京的 fun 1 mike def outer c def inner args,kwargs 通用的形參的設定 ...
Python3裝飾器解析
實現裝飾器知識儲備 1.函式即 變數 白話 函式實參 當作另乙個函式的形參 2.高階函式 a 把乙個函式名當作實參傳給另乙個函式 在不修改被裝飾函式源 的情況下為其新增功能 b 返回值中包涵函式名 說白了,此函式名是巢狀函式名 不修改函式的呼叫方式 3.巢狀函式 高階函式 巢狀函式 裝飾器 詳解im...