python2.7中打印的星号上升语法错误

时间:2017-07-20 02:29:32

标签: python python-2.7 python-3.x

在Fluent Python的书中,我在listcomp_speed.py中找到了一些代码,它在python3.5下运行良好,但它在python2.7下会出现语法错误。代码是:

def clock(label, cmd):
    res = timeit.repeat(cmd, setup=SETUP, number=TIMES)
    print(label, *('{:.3f}'.format(x) for x in res))

,错误是:

 def clock(label, cmd):
...     res = time.repeat(cmd, setup=SETUP, number=TIMES)
...     print(label, *('{:3.f}.formart(x) for x in res'))
File "<stdin>", line 3
print(label, *('{:3.f}.formart(x) for x in res'))
             ^
SyntaxError: invalid syntax

这对我来说没有意义,因为打印中的星号正在打开包装,并且拆包是打印支持,如 print(*("1","2")) 会运作良好。

并且相同的代码在python3.5中运行良好。

这本书没有指定python的环境。

1 个答案:

答案 0 :(得分:2)

在Python 2和Python 3之间改变了

print。在Python 2中,它是一个不需要括号的特殊声明。在Python 3中,它是一个需要括号的函数,但也可以做更多的事情 - 包括接受参数,就像你在这里展示的那样。

您可以通过编写

在Python 2中使用Python 3风格的print
from __future__ import print_function

位于文件顶部。