问题
上篇博客:一个例子看懂 Python 装饰器
在知道了 python 中的解释器是怎么回事以后,也许会遇到一个新的问题
如果要装饰函数有 未知个数的参数, 怎么办呢?
比如这样的函数
def oldfunction(name):
print()
return f"{time.asctime()},{name}在看我的博客"
@xiushi
def newfunction(name,place):
print()
return f"{time.asctime()},{name}在{place}看我的博客"
解决方案
import time
def xiushi(function):
def cat(*args, **kargs):
x = function(*args, **kargs)
return f'现在时间是: {x}'
return cat
@xiushi
def oldfunction(name):
print()
return f"{time.asctime()},{name}在看我的博客"
@xiushi
def newfunction(name,place):
print()
return f"{time.asctime()},{name}在{place}看我的博客"
print(oldfunction('小红'))
print(oldfunction(name='小红'))
print(newfunction(name='小明',place = '南京'))
print(newfunction('小明','南京'))
print(newfunction('小明',place = '南京'))
其中 *args 可以接受一切 不指定参数名 的传参方式 , 比如 ‘小红’
**kargs 可以接受一切 指定参数名 的传参方式 , 比如 place=‘南京’
|