我在哪里可以找到未完全实现的Python-Future导入文档?

时间:2018-01-20 19:07:18

标签: python python-2.7 incompatibility

我最近发现round中提供的future函数不支持负数舍入,这与内置round不兼容:

>>> from builtins import round
>>> round(4781, -2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/future/builtins/newround.py", line 33, in newround
    raise NotImplementedError('negative ndigits not supported yet')
NotImplementedError: negative ndigits not supported yet

这在某种程度上限制了Python-Future快速入门建议的实用性:

  

最简单的方法是使用以下行开始每个新模块:

from __future__ import (absolute_import, division,
                        print_function, unicode_literals)
from builtins import *
     

然后编写标准的Python 3代码。

我无法在任何地方找到round不兼容性,并想知道其他功能或类型的行为有何不同或具有未实现的功能。还有其他什么问题?这些不兼容性记录在哪里?

1 个答案:

答案 0 :(得分:4)

没有这样的清单。

Python-Future项目完全独立于Python项目,因此您确实在官方Python文档中列出的Python-Future项目中找不到任何实现差距。

遗憾的是,reference documentation for round()未能在实施中提及这一差距。对newround模块文档字符串的斜向引用也没有帮助,如it too is very scant on details

您必须向Python-Future项目询问此类列表,您可以尝试file an issue要求他们制作此类列表。

在此期间,您可以在源代码中search for NotImplementedError references。这将产生一个不完整的列表,因为在实现中可能存在缺陷,而不是通过提出该异常来解决。

就个人而言,我建议不要使用Python-Future;该项目的后向运输的理念,不考虑适用性或性能,不适合生产代码;例如,他们的super() implementation必须依赖MRO类上所有属性的完整扫描来定位相关的类作为第一个参数,使其变得缓慢和麻烦。只是因为你可以让它工作以某种方式并不意味着你应该。

他们的实施是不完整的,没有明确指出差距只会使我更难改变我对项目的看法。