- 积分
- 7213
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2020-5-29
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 雨里1998 于 2021-1-4 20:44 编辑
定义两层装饰器,代码为- def dec1(func):
- print('*****start*****')
- def new_function(*args1,**kwargs1):
- print('running functions1:',func.__name__)
- print('positional arguments1:',args1)
- result1=func(*args1,**kwargs1)
- print('result1:',result1)
- return result1
- print('*****end*****')
- return new_function
- def dec2(func):
- print('*****start*****')
- def new_function(*args2,**kwargs2):
- print('running functions2:',func.__name__)
- print('positional arguments2:',args2)
- result2=func(*args2,**kwargs2)
- print('result2:',result2*result2)
- return result2*result2
- print('*****end*****')
- return new_function
- if __name__=='__main__':
- @dec2
- @dec1
- def add(a,b):
- return a+b
- print(add(3,5))
复制代码 dec1为输出结果,dec2为输出结果的平方,add为计算输入参数之和。运行结果为- *****start*****
- *****end*****
- *****start*****
- *****end*****
- running functions2: new_function
- positional arguments2: (3, 5)
- running functions1: add
- positional arguments1: (3, 5)
- result1: 8
- result2: 64
- 64
复制代码
请问大佬们,为什么dec2中new_function的移动参数也是(3,5),输入它的内包是第一层的new_function,所以移动参数不应该是8吗?
|
|