协程(迭代器,生成器等)
一、 补充知识 isinstance(a,A) True 以上如果返回值为True则表示a是A的一个子类 Iterable是一个类,这个类的子类都是可迭代对象 由上图可以知 列表是可迭代对象 问题来了:是否可以通过自己创建的类产生的对象判断ta可以迭代呢? 发现不可以 如果想让类创建的实例对象用for的话,在类中额外添加方法__iter__ 可行但是依旧不可以拿for来循环‘ 因为 普通列表在for循环中取第一个完成后内部自动跳到第二个,但是自己定义的类没有这个光标 因此得在iter 返回一个对象的引用(这个引用必须包含iter和next方法)才可以进行for循环 for temp in classmate: pass 当for循坏是否判断可以运行的时候就是判断classmate是否是一个可迭代对象 如何判断其是否是一个可迭代对象呢?只要classmate中由iter的这个类就算可迭代对象 此时调用对象中iter函数来得到return的返回值,只要返回值中既包含iter和next俩方法,此值就算是迭代器 使用迭代器中的next来进行正常可迭代对象的光标下移 因此每调用一次for循环的temp的时候j就会调用next返回给temp 第一行代码iter(classmate)返回迭代器,将迭代器给一个变量 第二行代码将返回True时证明其就是迭代器 上两行代码验证其是否是迭代器