Python3 高階 裝飾器

2021-10-23 16:22:14 字數 1706 閱讀 2344

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...