我应该在Python v2.6.2中导入哪些功能?
我开始学习Python,但我不得不使用v2.6.2解释器 我希望尽可能接近Python 3,例如,使用新的我应该在Python v2.6.2中导入哪些功能?,python,python-3.x,python-2.6,python-module,Python,Python 3.x,Python 2.6,Python Module,我开始学习Python,但我不得不使用v2.6.2解释器 我希望尽可能接近Python 3,例如,使用新的print函数,“true”除法,等等 from __future__ import division from __future__ import print_function print(1/2, file=sys.stderr) # 0.5 我还应该从\uuuuuuuuuuuuuuuuuuuuuu导入哪些其他功能 我想我可以做一个常规的导入,但是当我升级到更高的版本时,我会有不同的行
print
函数,“true”除法,等等
from __future__ import division
from __future__ import print_function
print(1/2, file=sys.stderr) # 0.5
我还应该从\uuuuuuuuuuuuuuuuuuuuuu
导入哪些其他功能
我想我可以做一个常规的导入,但是当我升级到更高的版本时,我会有不同的行为(v2.7可能在
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
>>> import __future__
>>> __future__.all_feature_names
['nested_scopes', 'generators', 'division', 'absolute_import', 'with_statement', 'print_function', 'unicode_literals']
>>> __future__.unicode_literals
_Feature((2, 6, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 131072)
Python2.6已经启用了大多数功能,因此可以从division
、print\u function
、absolute\u import
和unicode\u literals
中进行选择
不,import\uuuuu future\uuuuu
不会像你想象的那样工作。当您使用from\uuuuuu future\uuuuuu导入某物
表单作为文件中的第一条语句时,这才是神奇的。更多信息,请参阅
当然,无论您从\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
我还应该从\uuuuuuuuuuuuuuuuuuuuuu
导入哪些其他功能
为了获得最新的行为,您当然应该导入所提供的所有\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。(按照系统的设置方式,旧功能即使始终打开,也不会被删除。)
请注意,import\uuuuu future\uuuuu
将不会给您提供一切,也不会from\uuuuu future\uuuuu导入*
。来自。。。导入…
语法是针对\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>的特殊情况(这就是它的工作原理),但是\uuuuuuuuuuuuuuuuu。但是,这样做会让您知道实际的功能名称,以及有关何时(或预期)将其设置为默认值以及何时可用的信息
>>> [
... name for name in __future__.all_feature_names if
... getattr(__future__, name).optional <=
... sys.version_info <
... getattr(__future__, name).mandatory
... ]
['division', 'print_function', 'unicode_literals']
>[
…未来中名称的名称。如果
…getattr(\uuuuu future\uuuuuu,name)。可选。你确定这是明智的吗?如果你被迫使用Python 2.x,并且开始以Python 3.x的风格编写代码,那么强迫你使用2.x的人不会抱怨吗?@DavidHeffernan:不,我可以随心所欲地编写脚本。只是我在一台安装了Python v2.6.2的旧计算机上,另外还安装了Python v3这似乎不是一个选项。安装Python3完全是一个问题option@Frank那就安装一个可移植的Python 3.x吧。你不需要这样安装任何东西,只要把它复制到你的桌面上,然后从那里运行即可。from\uuuuuuuuuuuuuuuuu\import
是一个future语句,而不是import语句——它有特殊的语义。import_uuufuture_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。@KarlKnechtel或者Nick Coglan或者Raymond Hettinger反对使用它,说将它包含在\uuuu future\uuuuuu
中是一个错误。我不记得它是在这里还是在博客帖子中。我只是使用了那个链接,因为我找不到我现在正在思考的那个链接。确实,由此产生的行为与3.x.U不太像无论如何,在输入/输出之外的任何地方使用UTF-8编码的ByTestRing都是一个坏主意。至少它以这种方式大声中断,而不是给出错误的结果,或者在某些机器上中断,而不是在其他机器上中断。