python 方法中的 SyntaxException.不知道为什么



谁能解释为什么我在运行setup.py install时出现以下语法错误:

例外

SyntaxError: ('invalid syntax', ('build/bdist.linux-x86_64/egg/cardstream/payment.py', 46, 15, '            for key, value in parse_qs(query).items()n'))

法典

 @classmethod
 def decode(this, query):
      """Decode a request/response from the given query string.
      """
      return {
          key: value if len(value) > 1 else value[0]
              for key, value in parse_qs(query).items()
      }

它所指的行是 for .我对Python很熟悉,但不太熟悉,以至于我能弄清楚它为什么在抱怨。

编辑 为完整起见,以下是手动运行脚本时的异常:

[...pythonsdk]$ python test/test_gateway.py
Traceback (most recent call last):
  File "test/test_gateway.py", line 4, in <module>
    from REMOVED.payment import Gateway
  File "/usr/lib/python2.6/site-packages/REMOVED-0.0.1-py2.6.egg/REMOVED/payment.py", line 46
    for key, value in parse_qs(query).items()
      ^
SyntaxError: invalid syntax

只需将字典理解转换为等效的dict()构造函数调用:

return dict((
          (key, value if len(value) > 1 else value[0])
              for key, value in parse_qs(query).items()
      ))

它不喜欢您将字典理解拆分为单独的行。

只需将其放在一行上:

return {
    key: value if len(value) > 1 else value[0] for key, value in parse_qs(query).items()
}

或者,如果您绝对必须拆分使用行继续符

return {
    key: value if len(value) > 1 else value[0] 
        for key, value in parse_qs(query).items()
}

最新更新