如果函数里有默认参数,怎么定义装饰器里的参数呢
来源:12-12 装饰器 五

simon_mm
2018-02-22
import time
def decorator(func):
def wrapper(*args, **kw):
print(time.time())
func(*args, **kw)
return wrapper
@decorator
def f3(func_name1, func_name2, **kw, func_name3='4'):
print("this is f3"+func_name1+func_name2+func_name3)
print(kw)
f3('f3','f3',a='1',b='2',c='3')
File "c4.py", line 10
def f3(func_name1, func_name2, **kw, func_name3='4'):
^
SyntaxError: invalid syntax
写回答
2回答
-
Licrates
2018-05-23
python中,函数的参数除了最基本的必选参数,默认参数外,主要包含以下几种特殊的参数类型:可变参数,关键字参数,命名关键字参数。它们的存在,使得函数的参数更加自由。在函数定义时,他们定义的顺序为:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
10 -
7七月
2018-02-22
你这个不是装饰器的问题,和装饰器没有关系,本身设计这个函数的参数的时候就有问题。你的f3,编译器是不知道你到底要传默认值还是 **kw。所以从新设计一下函数。
00
相似问题