请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

如果函数里有默认参数,怎么定义装饰器里的参数呢

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


正在回答 回答被采纳积分+3

2回答

Licrates 2018-05-23 08:47:13

python中,函数的参数除了最基本的必选参数,默认参数外,主要包含以下几种特殊的参数类型:可变参数,关键字参数,命名关键字参数。它们的存在,使得函数的参数更加自由。在函数定义时,他们定义的顺序为:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

1 回复 有任何疑惑可以回复我~
7七月 2018-02-22 14:12:52

你这个不是装饰器的问题,和装饰器没有关系,本身设计这个函数的参数的时候就有问题。你的f3,编译器是不知道你到底要传默认值还是 **kw。所以从新设计一下函数。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信