- 已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
4天前关闭。
这篇文章是4天前编辑并提交审查的。
Improve this question
我正在使用python 3.9和jupyter notebook,试图用不同的方式处理args和kwargs,但是我传入的每个args都被解释为关键字arg,这与这个问题(Default arguments in a function when using decorators)的行为完全相反。
from makefun import wraps
def outer(func):
@wraps(func)
def inner(*args, **kwargs):
print("args:", args)
print("kwargs:", kwargs)
return inner
@outer
def simple(x, y=100):
pass
simple(10)
然后我得到
args: ()
kwargs: {'x': 10, 'y': 100}
我期望输出打印args:10克朗:{}
1条答案
按热度按时间svmlkihl1#
使用
functools
,而不是makefun
软件包使用 Package 可以确保预期的行为。如果使用层库,则需要检查实现是否相同。
(编辑,因为问题已关闭,上一个答案在下面)
您的代码很好,请使用装饰器和函数定义重新运行jupyter单元格
查看输出,您正在运行旧版本的装饰器。您的代码:
您的输出:
x
和y
不可能凭空出现。如果您在交互式解释器中运行代码,您将看到正确的行为。
如果您有Jupyter notebook,不要忘记用装饰器定义和函数定义重新加载整个页面或两个单元格。