以下代码在 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