2017-02-28 133 views
0

我想在python itertools中看到chain的源代码,但是这里是我在源代码中找到的东西?为什么他们都是“通过”?python链中的源代码在哪里?

class chain(object): 
    """ 
    chain(*iterables) --> chain object 

    Return a chain object whose .__next__() method returns elements from the 
    first iterable until it is exhausted, then elements from the next 
    iterable, until all of the iterables are exhausted. 
    """ 
    @classmethod 
    def from_iterable(cls, iterable): # real signature unknown; restored from __doc__ 
     """ 
     chain.from_iterable(iterable) --> chain object 

     Alternate chain() contructor taking a single iterable argument 
     that evaluates lazily. 
     """ 
     pass 

    def __getattribute__(self, *args, **kwargs): # real signature unknown 
     """ Return getattr(self, name). """ 
     pass 

    def __init__(self, *iterables): # real signature unknown; restored from __doc__ 
     pass 

    def __iter__(self, *args, **kwargs): # real signature unknown 
     """ Implement iter(self). """ 
     pass 

    @staticmethod # known case of __new__ 
    def __new__(*args, **kwargs): # real signature unknown 
     """ Create and return a new object. See help(type) for accurate signature. """ 
     pass 

回答

1

您看到的类可能是另一个模块。 Itertools和许多其他内置函数都是用编译后的c语言编写的。你可以在这里阅读CPython的代码 https://github.com/python/cpython/blob/3.6/Modules/itertoolsmodule.c#L1792

和迭代工具文档中,它指出在链功能大致相当于:

def chain(*iterables): 
    # chain('ABC', 'DEF') --> A B C D E F 
    for it in iterables: 
     for element in it: 
      yield element 
+1

CPython的多年没有使用SVN回购协议。也许使用[更现代的链接](https://github.com/python/cpython/blob/3.6/Modules/itertoolsmodule.c#L1792)? – ShadowRanger

+0

感谢您的链接 – abccd