以下是我的行动:
>>> def show(d):
print d
...
>>> test = {"result": True}
>>> show(test)
{'result': True}
>>> show(test["info"]="Some info")
File "<console>", line 1
SyntaxError: keyword can't be an expression
为什么我不能将表达式作为参数传递给函数?
答案 0 :(得分:8)
=
符号向Python表明这是一个关键字参数,而不是位置参数。由于=
左侧的部分是表达式test["info"]
,因此您会收到错误。
答案 1 :(得分:4)
不允许在Python表达式中赋值的原因是由这种结构引起的其他语言中常见的,难以发现的错误:
if (x = 0) {
// error handling
}
else {
// code that only works for nonzero x
}
来源:http://docs.python.org/faq/design.html#why-can-t-i-use-an-assignment-in-an-expression
答案 2 :(得分:4)
我认为您要做的是将其作为glob类型传递。
show(*test)
这样做你必须匹配你的arg签名,所以测试必须定义为
test = {'d' : True}
或show必须是
def show(result):
答案 3 :(得分:1)
因为一般来说没有意义。你想从中获得什么?赋值不返回值。
让我们想一想几个可能性:
None
- 没有价值。无论哪种方式,你要做的事情都没有意义。