谁能解释为什么我在运行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()
}