Python装饰器decorator用法实例(2)
当然我们已经很容易知到为什么会这样报错了,fun3已经不是指向它定义时那个函数了,它现在指向了”inner()”,而inner是没有参数的,当然会出错。 那怎
当然我们已经很容易知到为什么会这样报错了,fun3已经不是指向它定义时那个函数了,它现在指向了”inner()”,而inner是没有参数的,当然会出错。
那怎么解决呢?
修改一下inner()的定义,让它可以就收任意个参数就可以了。
复制代码 代码如下:
def entrance(func):
def inner(*args, **kvargs):
print "inside function : ", func.__name__
func(*args, **kvargs)
return inner
def inner(*args, **kvargs):
print "inside function : ", func.__name__
func(*args, **kvargs)
return inner
现在,给inner传任意个参数都不会出错了,也就是entrance可以被用来装饰任何一个函数了。
3. 写个装饰器logger
一个函数被调用时,在日志里记录其名称和被调用的实际参数
复制代码 代码如下:
def logger(func):
def inner(*args, **kvargs):
print func.__name__, 'called, arguments: ', args, kvargs
func(*args, **kvargs)
return inner
def inner(*args, **kvargs):
print func.__name__, 'called, arguments: ', args, kvargs
func(*args, **kvargs)
return inner
希望本文所述对大家的Python程序设计有所帮助。
精彩图集
精彩文章