- 迭代器
-
''' 可迭代对象 以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如 list tuple dict set str等 一类是generator,包括生成器和带yield的generator function 这些都可以直接作用于for循环的对象统称为可迭代对象: lterable 判断是否可以迭代 可以使用isinstance()判断一个对象是否是Iterable对象: from collections import Iterable isinstance([],Iterable) 是True就是可迭代对象 是False不是可迭代对象 迭代器 可以被next()函数调用并不断反回下一个值的对象称为迭代器:Iterator. 可以使用isinsrance()判断一个对象是否是Iterator对象: from collections import Iterator isinstance((x for x in range(10)),Iterator) 是True就是迭代器可以用next() 是False不是迭代器不可以用next() iter()函数 生成器都是Iterator对象,但list dict str 虽然是Iterable,却不是Iterator 把list dict str 等Iterable变成Iterator可以使用iter()函数: isinstance(iter([]),Iterator) 是True就是迭代器可以用next() 是False不是迭代器不可以用next() 总结 凡是可作用于for循环的对象都是Iterable类型 凡是可作用于next()函数的对象都是Iterator类型 集合数据类型如list dict str 等是Iterable但不是 Iterator,不过可以用iter()函数获得一个Iterator 对象 '''
- 闭包
-
#在函数内部在定义一个函数,并且这个函数用到了外边函数的变量 #那么将这个函数以及用到的一些变量称之为闭包 def test1(number1): print("----1----") def test2(number2): print("----2----") print(number1+number2) print("----3----") return test2 result = test1(100) print("-"*50) result(1) #因为result保存了test1里的变量所以test1这个函数还没有结束所以number1还有效 result(100) result(200)
- 闭包-应用
-
def test1(a,b): def test2(x): print(a*x+b) return test2 line1 = test1(1,1) #这是开辟了一个空间 line1(0) line2 = test1(10,4)#这又是开辟了一个空间 line2(0) line1(0) # 因为空间没有被释放 #def createNum(a,b,x): # print(a*x+b) # #a = 1 #b = 1 #x = 0 #createNum(a,b,x)
python迭代器、闭包
猜你喜欢
转载自blog.csdn.net/zsx1314lovezyf/article/details/89816898
今日推荐
周排行