如果我使用Python 2.7.11,我发现在新的print函数中我不能使用flush
参数。我用过:
from __future__ import print_function
print('Hello', flush=True)
但它抱怨错误:
Traceback (most recent call last):
File "print_future.py", line 3, in <module>
print('Hello', flush=True)
TypeError: 'flush' is an invalid keyword argument for this function
在查看the documentation for print
之后,我发现即使它是一个论点,它也不起作用。我的推论是它不起作用,因为flush
仅在版本3.3中添加,因此特殊的from __future__ import
语句可能导入该函数的旧版本。评论表明它使用2.7.11,但我不明白为什么要这样做。
我确实看到了Need Python 3.4 version of print() from __future__,其答案只是包裹了print
并手动添加了flush
参数。即使它有效,但它似乎比解决真正的问题更糟糕,我们没有最新版本的打印。
有没有办法导入特定版本的Python函数(我想特别使用Python 3.5 print
函数)到我当前的Python脚本?如果这不可能,为什么不呢?
似乎(令人惊讶地)人们不清楚即使我写了它,我的问题是如何不同的。我会说不同的。
答案 0 :(得分:1)
导入我不期望的python函数
我不明白为什么,这是print
that's documented in 2.7.x的版本。
导入哪个打印功能。
与2.7.11捆绑在一起的版本,这是3.0中引入的版本(参见PEP-3105)。
评论建议使用2.7.11,但我不明白为什么要这样做
...因为那是您正在使用的Python版本? from __future__ import ...
无法在您的计算机上搜索其他实施方案,它会使用与您正在使用的Python版本捆绑在一起的实施方案。如果你考虑一下这是不可避免的,否则未来的进口将在没有安装3.x的机器上失败。
大部分内容对我来说没什么意义,但是:
我认为,因为它是未来的声明,它还从未来版本中引入了打印功能。
正是它正在做什么。但是,您无法选择哪个以后的版本。您可以获得在将其添加到__future__
时计划发布的版本。
有没有一种自然的方式将未来的python函数导入到我当前的python脚本中?
是的,这是您使用的方式,只要__future__
支持该功能。
是否无法使用该功能
不是你正在使用的Python版本中的3.3版本,没有*。如果您想要更新版本的Python提供的功能,使用更新版本的Python 。 2.x正在走出公路。
对于解析器的行为就像未来的python一样,但至少对我来说是反直觉的,但仍然像2.7.11那样行事
&#34; [代理]不像2.7.11&#34; 。它使用3.x中的print函数而不是2.x中的print语句。如果您在导入print 'hello'
后尝试print_function
,则会像在3.x中那样获得SyntaxError
。
*假设您不打算进行黑客入侵