我听说range是一个发电机,后来我意识到它不是通过this helpful post。虽然这篇文章详细解释了__contains__
方法如何在恒定时间内工作,但我找不到任何关于如何创建惰性序列的源代码参考。我试图自己破译这个source code,但由于只有C语言的基本知识,我正在努力。我相信下面的代码片段是__iter__
如何在范围内工作的(如果我错了,请纠正我)——您能解释一下懒惰序列是如何在这里实现的吗?它与生成器的延迟序列有什么不同吗
range_iter(PyObject *seq)
{
rangeobject *r = (rangeobject *)seq;
longrangeiterobject *it;
long lstart, lstop, lstep;
PyObject *int_it;
long_range:
it = PyObject_New(longrangeiterobject, &PyLongRangeIter_Type);
if (it == NULL)
return NULL;
it->start = r->start;
it->step = r->step;
it->len = r->length;
it->index = _PyLong_Zero;
Py_INCREF(it->start);
Py_INCREF(it->step);
Py_INCREF(it->len);
Py_INCREF(it->index);
return (PyObject *)it;
}
目前没有回答
相关问题 更多 >
编程相关推荐