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