Discuss / Python / 给廖老师点个赞!!

给廖老师点个赞!!

Topic source

_swayer

#1 Created at ... [Delete] [Delete and Lock User]

import functools from inspect import isfunction

def log(text): def decorator(func): @functools.wraps(func) def wrapper(args , kw): print('text:',text) print('begin call') func(*args , kw) print('end call') return wrapper if isfunction(text): return decorator(text) return decorator

@log

def f(): pass

@log('execute')

def f(): pass

其实这章思考题和前面【返回函数】那章的练习题,可以看出廖老师的良苦用心,因为这个思考题,可以看出,老师想锻炼我们的编程思想。

文章中说 @log def now(): print('2015-3-25') 等同于 now = log(now) 和 @log('execute') def now(): print('2015-3-25') 等同于 now = log('execute')(now)

所以知道我们如果不带参数的装饰器,那么传入的参数默认则就是要执行的方法名,所以,我们需要判断传入的参数是否为function类型。 怎么判断是否为function类型这个还没学习过,所以只有通过百度查找。老师是想锻炼我们有主动学习的能力和思考的能力,给廖老师点个赞!!


  • 1

Reply