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

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

1
0

7七月

2018-02-22

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

0
0

Python3.8系统入门+进阶 (程序员必备第二语言)

语法精讲/配套练习+思考题/原生爬虫实战

14598 学习 · 4469 问题

查看课程