python裝飾器name python裝飾器

2021-10-21 07:38:26 字數 990 閱讀 4746

import functools

# 在**執行期間動態增加功能的方式,稱之為「裝飾器」,裝飾器就是返回函式的高階函式

# 不帶引數的裝飾器

def log1(func):

# 修正裝飾器的name指向

@functools.wraps(func)

print(func.__name__, '我要插入乙個日誌')

return func(*args, **kw)

# 帶引數的裝飾器 中間再加一層函式包裹

def log2(str):

def d(func):

@functools.wraps(func)

print('%s %s():' % (str, func.__name__))

return func(*args, **kw)

return d

def log3(str):

def d(func):

# @functools.wraps(func)

print('%s %s():' % (str, func.__name__))

return func(*args, **kw)

return d

# 相當於 log1(hello1)

@log1

def hello1():

print('hello world1')

# 相當於log2(111)(hello2)

@log2('111')

def hello2():

print('hello world2')

@log3('222')

def hello3():

print('hello world3')

hello1() # 裝飾器列印hello1 我要插入乙個日誌 函式本身列印hello world1

print(hello1.__name__)

print(hello2.__name__) # hello2

python裝飾器 Python 裝飾器

簡言之,python裝飾器就是用於拓展原來函式功能的一種函式,這個函式的特殊之處在於它的返回值也是乙個函式,使用python裝飾器的好處就是在不用更改原函式的 前提下給函式增加新的功能。一般而言,我們要想拓展原來函式 最直接的辦法就是侵入 裡面修改,例如 這是我們最原始的的乙個函式,然後我們試圖記錄...

python裝飾器 裝飾器

由於函式也是乙個物件,而且函式物件可以被賦值給變數,所以,通過變數也能呼叫該函式。def now print 2015 3 25 f now f 2015 3 25 函式物件有乙個 name 屬性,可以拿到函式的名字 now.name now f.name now 現在,假設我們要增強now 函式的...

python裝飾器原理 Python裝飾器原理

裝飾器 decorator 是物件導向設計模式的一種,這種模式的核心思想是在不改變原來核心業務邏輯 的情況下,對函式或類物件進行額外的修飾。python中的裝飾器由python直譯器直接支援,其定義形式如下 decorator def core service 要理解上述 的含義,我們從自定義函式裝...