2

以下代码在 2.7.3 上很好,但在 2.7.1 上给出了语法错误。如果 <>: else: 在 2.7.1 中构造,我是否必须将其重写为四行?还是有其他事情发生?

2.7.1 中的错误(适用于 2.7.3):

    stub=(sys.argv[ix].lower()=='true' if len(sys.argv)>ix else False)
                                        ^
SyntaxError: invalid syntax

我很惊讶,因为我认为次要版本号 diff 2.7.3 与 2.7.1 只是错误修复,而不是功能。

更新:仅当脚本直接作为 bash 运行时才会出现此问题。即“./test.py”而不是“python test.py”。而且该错误仅在 2.7.1 中发生(无论哪种方式,2.7.3 都很高兴)

我创建了完整的小程序,它在 2.7.3 或 2.7.1 中通过 python test.py 并在 2.7.3 中作为 ./test.py 传递,但在 2.7.1 下运行的 ./test.py 失败

#!/usr/bin/python
import sys

ix=1
stub=sys.argv[ix].lower()=='true' if len(sys.argv)>ix else False
print stub

在 2.7.1 下运行:

$ ./test.py
  File "./test.py", line 5
    stub=sys.argv[ix].lower()=='true' if len(sys.argv)>ix else False
                                       ^
SyntaxError: invalid syntax

在 2.7.3 下运行:

$ ./test.py
False
4

2 回答 2

1

尝试重新排列你的表情

stub = sys.argv[ix].lower() == 'true' if len(sys.argv) > ix else False

或者如果它更适合你的眼睛

stub = (sys.argv[ix].lower() == 'true') if len(sys.argv) > ix else False
于 2013-07-28T19:27:26.977 回答
1

然后根据2.5 发行说明安装了条件表达式,我可以确认它们在 2.7.2 编辑:和 2.7.1 中工作。我猜问题出在前一行代码上。

于 2013-07-28T19:28:33.970 回答