在python函数调用中对**参数感到困惑
这个问题在这里已经有了答案:
if neg:
那条线是越野车。 它应该是:
if options["neg"]:
函数如何知道值何时结束以及何时开始?
未命名的值以*values
。 关键字参数进入**options
。
你犯了一个小错误。 改变你的代码到下面,它应该工作。 只需从options
字典中获取"neg"
的值( values
包含未命名的参数, options
包含关键字参数)
>>> def sum(*values, **options):
s = 0
for i in values:
s = s + i
if "neg" in options:
if options["neg"]:
s = -s
return s
>>> s = sum(1, 2, 3, 4, 5, neg=True)
>>> s
-15
>>> sum(1, 2, 3, 4, 5)
15
>>> sum(1, 2, 3, 4, 5, neg=True)
-15
>>> sum(1, 2, 3, 4, 5, neg=False)
15
尽管,正如@glglgl指出的那样,将代码更改为以下代码会将if
语句合并为一个。
>>> def sum(*values, **options):
s = 0
for i in values:
s = s + i
if options.get("neg", False):
s = -s
return s
如何get(...)
工作?
如果options
字典没有键"neg"
(由第一个if条件处理),那么get(...)
返回False
的默认值,并且s
不是否定的,如果options
包含"neg"
,则返回值,在这种情况下,取决于字典中的值, s
被否定。