将表达式作为参数传递:关键字不能是表达式

Dmi*_*sev 2 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 expression
Run Code Online (Sandbox Code Playgroud)

为什么我不能将表达式作为参数传递给函数?

Mar*_*som 8

=符号表示Python这是一个关键字参数,而不是一个位置之一.由于=表达式左侧的部分是表达式test["info"],因此会出现错误.


Ash*_*ary 5

不允许在Python表达式中赋值的原因是其他语言中的一个常见的,难以发现的错误,由以下结构引起:

if (x = 0) {
    // error handling
}
else {
    // code that only works for nonzero x
}
Run Code Online (Sandbox Code Playgroud)

来源http : //docs.python.org/faq/design.html#why-can-ti-use-an-assignment-in-an-expression

在此处输入图片说明