Python代码中sum()函数的错误 -- 语法在一个平台上可用,在另一个平台上不可用

1 投票
2 回答
1217 浏览
提问于 2025-04-17 03:40

我在用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。

撰写回答