Python代码中sum()函数的错误 -- 语法在一个平台上可用,在另一个平台上不可用
我在用Python的时候遇到了一个错误(是继承的代码)。一个在某个平台上能正常工作的Sum()函数,在另一个平台上却不行——我觉得可能是因为某些语法在不同的平台上不兼容。现在我看到的错误信息是:
bsrlx1(112)% /usr/bin/python run-print.py init data
File "run-print.py", line 105
val = sum(1 if x >= 0.5 else 0 for x in metricC[key]);
^
SyntaxError: invalid syntax
虽然这个语法在其他地方是可以用的。有没有人知道语法有什么变化,或者问题可能出在哪里呢?
我使用的Python版本是:
Python 2.4.3 (#1, Apr 14 2011, 20:41:59) [GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2我程序中的头文件是:
#!/usr/bin/python2.5
所以我觉得我可能在用2.5版本。
2 个回答
2
这段代码太复杂了,而且在Python 2.4上无法运行,正如你发现的那样。把它改成这样:
val = sum(1 for x in metricC[key] if x >= 0.5)
好处有:(1) 可以在Python 2.4上运行 (2) 不用再解释怎么添加布尔值 (3) 更高效(不浪费时间添加零) (4) 结尾没有多余的;
。
8
你正在使用一种叫做条件表达式的东西,这个功能是在Python 2.5版本中加入的。
你现在用的不是/usr/bin/python2.5
,而是/usr/bin/python
(这个是2.4版本)。如果想用文件里指定的解释器来运行它,你需要先让它可以执行,然后直接运行:
chmod +x run-print.py
./run-print.py
不过,除非你的操作系统有特别的版本,否则你可能没有安装Python 2.5。