否闭包.有内容就是闭包,没有内容就不是闭包
inner()
wrappe()
迭代
s = "今天下午考试,你们还要睡觉吗 "
for c in s: #字符串是一个可迭代对象
print (c)
for i in 123: # 'int' object is not iterable整型是不可以迭代的
print(i)
dir(对象) #可以帮我们查看xxx数据能够执行的操作
print(dir(str)) #__iter__
字符串 列表 字典 元组 集合 是可以迭代的
int 和 bool 是不可以迭代的
共性:所有带有__iter__的东西可以进行for循环,带有__iter__的东西就是可以迭代的
lst = ["贾樟柯", "李安", "杨德昌", "王家卫"]
it = lst.__iter__() #拿到的是迭代器
print(it.__next__()) #下一个
print(it.__next__()) #下一个
print(it.__next__()) #下一个
print(it.__next__()) #下一个
print(it.__next__()) #下一个 会报错 stopinteration 停止迭代
##想回去只能重新获得迭代器
1.只能项下执行,不能反复
2.结束的时候会扔给我们一个错误 stopiteration
3.整合所有的数据类型进行遍历 (int,bool除外)
用while循环来模拟for循环
it = list.__iter__()
while 1:
try:
el = it.__next__: #拿数据
print(el)
except stopiteration: #出现错误说明数据拿完了
break #退出循环
官方通过代码判断是否是迭代器
借助于两个模块 Iteration 迭代器,iterable 可迭代的
from collections import iterable,iterator
lst = [1,2,3]
print(lst.__next__())
print(isinstance(lst, Iterable)) # xxx是否是xxx类型的. True
print(isinstance(lst, Iterator)) # False
迭代器一定是可迭代的,可迭代的东西不一定是迭代器
isinstens(参数,iterable) 判断xxx是不是某某类型
|