在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的环境。
答案 0 :(得分:2)
print
。在Python 2中,它是一个不需要括号的特殊声明。在Python 3中,它是一个需要括号的函数,但也可以做更多的事情 - 包括接受参数,就像你在这里展示的那样。
您可以通过编写
在Python 2中使用Python 3风格的print
from __future__ import print_function
位于文件顶部。