Ale*_*lex 13 python python-import
为什么未来的导入仅限于某些功能?有没有办法在 Python 3.7 中获得海象运算符?我认为这会起作用,但它不起作用:
from __future__ import walrus
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为 walrus 不在支持的功能列表中:
__future__.all_feature_names
['nested_scopes', 'generators', 'division', 'absolute_import', 'with_statement', 'print_function', 'unicode_literals', 'barry_as_FLUFL', 'generator_stop', 'annotations']
Run Code Online (Sandbox Code Playgroud)
除了使用 python 3.8,还有其他替代方案吗?
kay*_*ya3 28
如果您使用的 Python 版本不包含某个功能的实现,则您不能使用该功能;编写from __future__ import ...不能导致该功能在您安装的 Python 版本中实现。
__future__导入的目的是为可能破坏现有程序的新功能提供一个“选择加入”期。例如,当/运算符在整数上的行为被更改3/2为1.5而不是1(即地板除法)时,如果只是在一夜之间更改,这将破坏大量代码。所以这两种行为都在接下来的几个 Python 版本中实现了,如果你使用的是这些较新版本之一,那么你可以选择带有from __future__ import division. 但是您之所以能够这样做,是因为您使用的 Python 版本确实实现了新行为。
海象运算符是在 Python 3.8 中引入的,因此如果您使用的是 3.8 之前的版本,那么它不包含该运算符的实现,因此您不能使用它。没有必要__future__使 walrus 运算符“选择加入”,因为引入具有新语法的新运算符不会破坏任何现有代码。
Tim*_*ers 16
您可以阅读介绍的 PEP以__future__获得洞察力。主要是,
有时,Python 会对核心语言结构的宣传语义进行不兼容的更改,或者以某种方式更改其意外(依赖于实现)的行为。虽然这从来都不是反复无常的,而且总是为了长期改进语言而这样做,但在短期内它是有争议的和具有破坏性的。
海象运算符不是向后不兼容的更改:它不会改变已经“工作”的代码的含义。:=之前只是语法错误。
所以__future__从来没有考虑过添加它。您可能会反对说,“with”语句同样是全新的,但事实并非如此:“with”不是保留字,它的引入可能会破坏使用“with”作为标识符的工作代码。
所以,抱歉,请使用 3.8,否则你就不走运了。不要射击信使;-)