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,这部分已经由其他人充分回答了。(哎呀,原来是你!)