常見的裝飾器

2021-09-23 07:43:39 字數 1689 閱讀 3288

# 不帶引數的裝飾器

def decorate(func):

@wraps(func)

# 執行函式前需要做的事

result = func(*args, **kwargs)

# 執行函式後需要做的事,最後返回結果

return result

import time

from functools import wraps

# 引數的裝飾器

def log_time(output):

def decorate(func):

@wraps(func)

begin = time.time()

result = func(*args, **kwargs)

output(func.__name__, time.time() - begin)

return result

return decorate

def log_to_console(fname, duration):

def log_to_file(fname, duration):

with open('recode.txt', 'a') as file_stream:

@log_time(log_to_console)

def foo():

print('hello, world!')

time.sleep(3)

def main():

print(foo.__name__)

foo()

# 取消裝飾器

if __name__ == '__main__':

main()

import time

from functools import wraps

# 不帶引數的裝飾器

def decorate(func):

@wraps(func)

begin = time.time()

result = func(*args, **kwargs)

return result

@decorate

def foo():

print('hello')

# 取消裝飾器

try
def is_login(func):

@wraps(func)

def check_login(*args, **kwargs):

try:

session['user_id']

except:

return redirect(url_for('user.login'))

return func(*args, **kwargs)

return check_login

if
def is_login(func):

@wraps(func)

def check_login(*args, **kwargs):

if not session.get('user_id'):

return redirect(url_for('user.login'))

return func(*args, **kwargs)

return check_login

Flask框架各種常見裝飾器示例

效果類似django的pr程式設計客棧ocess request的裝飾器 app.before request def before args,kwargs print 請求之前 www.cppcns.com 如果允許通過訪問,可以return none 該裝飾器裝飾的函式如果有return其他內容...

裝飾器之類裝飾器

外部的方法至今都玩過了,現在來思索一下的方法這麼裝飾 類方法修飾器 類的方法唯一的特殊點在於,self內部是可以呼叫的,但是在外部卻是隱藏的,那這個怎麼搞 為求穩妥,先定參修飾乙個 def godme fun def godme self,message print before fun self,...

python裝飾器 裝飾器

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