我正在使用Python 2.7。
按照惯例,__iter__
,__init__
,__str__
等内置方法都有双下划线来识别它们。为什么next()
函数没有这个?
它与其他内置函数一起使用:https://docs.python.org/2/library/functions.html这似乎不是一个非常一致的约定。
答案 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__()
方法。