【发布时间】:2021-12-30 17:28:19
【问题描述】:
我想知道我落后的地方。我是 python 装饰器的新手。 我们如何将关键字参数作为参数传递给装饰器?
import time
import math
def deco(x,y,*args,**kwargs): #I want to pass kwarg like="andrew" here
def short(func):
def longer(r,*args,**kwargs):
print("before func exe")
begin = time.time()
func(r)
end = time.time()
print("after func exe")
print("I am ",kwargs['like'])
print("Total time taken in : ", func.__name__, end - begin)
return longer
return short
@deco(3,4,like="andrew")
def greet(r):
r = "I will be selelcted"
print(r)
# print("I am sorry for demanding")
print(greet('r'))
在这里,如果我们尝试为 **kwargs 传递 like="andrew" 则会引发错误。 那怎么传给deco呢?
我也试过喜欢这个。
def deco(x,y,like):
def short(func):
def deco(x,y,'like'):
def short(func):
我在上述方法中犯了什么错误?
它抛出错误。 KeyError: '喜欢'
【问题讨论】:
-
这可能会有所帮助:Decorators with parameters
标签: python collections decorator python-decorators keyword-argument