【发布时间】:2012-07-26 19:56:56
【问题描述】:
有没有什么情况
f(arg1, arg2..., argN)
工作并产生结果并且
f(arg1, arg2..., argN, **{} )
产生不同的结果,还是导致错误?
我假设 **kwds 尚未出现在参数列表中。
上下文是我正在编写一个包含函数及其参数的函子 供以后评估,并希望支持可选关键字。
【问题讨论】:
有没有什么情况
f(arg1, arg2..., argN)
工作并产生结果并且
f(arg1, arg2..., argN, **{} )
产生不同的结果,还是导致错误?
我假设 **kwds 尚未出现在参数列表中。
上下文是我正在编写一个包含函数及其参数的函子 供以后评估,并希望支持可选关键字。
【问题讨论】:
是的,这样做总是安全的。这两个调用是完全等价的,函数f()没有办法区分(当然除了自省源代码)。
【讨论】:
dict 的可变性在这里不重要吗?
f 在 c 中实现可能会发生一些奇怪的事情