Python 将表达式作为参数传递:关键字can';这不是一种表达
以下是我的行动:Python 将表达式作为参数传递:关键字can';这不是一种表达,python,python-2.7,Python,Python 2.7,以下是我的行动: >>> 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 expres
>>> 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显示(d):
打印d
...
>>>测试={“结果”:真}
>>>显示(测试)
{'result':True}
>>>显示(测试[“信息”]=“一些信息”)
文件“”,第1行
SyntaxError:关键字不能是表达式
为什么我不能将表达式作为参数传递给函数?因为它通常没有意义。你想从中得到什么?赋值不返回值 让我们考虑一些可能性:
- 表达式应作为函数传递-应使用lambda或创建实际函数
- 表达式应该返回一个布尔值以表示成功-Python在失败时引发异常,请检查这些异常
- 表达式应给出
-此值无效None
不管怎样,您试图做的都没有意义。符号向Python表明这是一个关键字参数,而不是位置参数。由于
=
左边的部分是一个表达式test[“info”]
您会得到错误。不允许在Python表达式中赋值的原因是其他语言中常见的、难以发现的错误,由此构造引起:
if (x = 0) {
// error handling
}
else {
// code that only works for nonzero x
}
来源:
我认为您要做的是将其作为glob类型传递
show(*test)
执行此操作时,您必须匹配arg签名,因此测试必须定义为
test = {'d' : True}
否则这场演出就要结束了
def show(result):
是的,这是我的遗漏-我忘了赋值没有返回一个值,该值不能很好地解释他收到的错误,但不能真正回答眼前的问题。@Lattyware,这部分已经由其他人充分回答了。(哎呀,原来是你!)