Python:为什么不将“next()”称为“__next __()”

时间:2014-06-18 09:49:43

标签: python naming-conventions

我正在使用Python 2.7。

按照惯例,__iter____init____str__等内置方法都有双下划线来识别它们。为什么next()函数没有这个?

它与其他内置函数一起使用:https://docs.python.org/2/library/functions.html这似乎不是一个非常一致的约定。

2 个答案:

答案 0 :(得分:8)

内置函数没有__,因为内置函数都没有。您使用特殊方法(如str)混淆了内置插件(如__str__)。

现在,内置next调用的特殊方法在Python 2.7中也称为next,但该命名被认为是偶然事件,并在Python 3中更改为__next__

答案 1 :(得分:3)

它是在Python v3.x中。并且仍然存在向后兼容性。来自http://docs.pythonsprints.com/python3_porting/py-porting.html

  

Python 3引入了next()函数来替换next()方法   迭代器对象。而不是在迭代器上调用方法   调用next()函数,将可迭代对象作为唯一函数   参数,调用基础__next__()方法。