4.10 Python3 进阶 - 迭代器 & 生成器】的更多相关文章

>>返回主目录 源码 from typing import Iterable, Iterator # 可迭代对象:字符串.列表.元组.字典.集合.range().enumerate()等 print('判断字符串是否是可迭代对象:', isinstance('Python', Iterable)) # True print('判断range函数生成的对象是否是可迭代对象:', isinstance(range(1), Iterable)) # True print('判断字符串是否是迭代器:'…
1.迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式.. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 迭代器有两个基本的方法:iter() 生成迭代器和 next()遍历迭代器元素. >>> dil = iter(range(10)) #使用iter方法创建一个迭代器 >>> print(type(dil)) #类型为迭代器 <class 'range_it…
1.函数进阶 1.1.名称空间 又名name space, 顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的地方 名称空间共3种,分别如下 locals: 是函数内的名称空间,包括局部变量和形参 globals: 全局变量,函数定义所在模块的名字空间 builtins: 内置模块的名字空间 1.2.作用域 全局范围:全局存活,全局有效 局部范围:临时存活,局部有效 查看作用域方法 globals(),lo…
迭代器 可迭代协议和迭代器协议 可迭代协议 只要含有__iter__方法的对象都是可迭代的 迭代器协议 内部含有__next__和__iter__方法的就是迭代器 关系 1.可以被for循环的都是可迭代的 2.可迭代的内部都有__iter__函数 3.只要是迭代器,一定可迭代 4.可迭代的对象使用__iter__方法就可以得到一个迭代器 5.迭代器中的__next__方法可以一个一个的获取值 例子 判断是否是可迭代类型 可以被for循环的类型都有__iter__()函数 dir()函数可以返回类…
装饰器进阶 带参数的装饰器 # 某一种情况# 500个函数加装饰器, 加完后不想再加这个装饰器, 再过一个季度,又想加上去# 你可以设计你的装饰器,来确认是否执行 # 第一种情况 # 想要500个函数执行装饰器的话,可以定义个变量flag # Flag = False # import time # def outer(flag): # def timer(f): # def inner(*args, **kwargs): # if flag == True: #如果flag==ture,装饰器…
#!/usr/bin/env python __author__ = "lrtao2010" #python3.7 迭代器和生成器 #迭代器协议: ''' 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项, 要么就引起一个StopIteration异常,已终止迭代,只能往后走,不能往前退. 2.可迭代对象:实现了迭代器协议的对象(对象内部定义一个__iter__()方法),节省内存 3.协议是一种约定,可迭代对象实现了迭代器协议,Python的内部工具…
笔者QQ 360212316 迭代器&生成器 生成器: 一个函数调用返回一个迭代器,那这个函数叫做生成器,如果函数中包含yield语法,那么这个函数就会变成生成器 生成器的特点: 1.生成器必须从前往后一次访问,不能跳着取 2.生成器只记录访问的数据,其他数据释放 3.生成器的作用就是预想可能用到那么多的数据 生成器的两种方式: 方式一: data = (x * 2 for x in range(5)) # 获取结果的两种方式 print(data.__next__()) print(next(…
一.迭代器(foreach) 1.可迭代的对象 内置有__iter__方法的都叫可迭代的对象. Python内置str.list.tuple.dict.set.file都是可迭代对象. x = 1.__iter__ # SyntaxError: invalid syntax # 以下都是可迭代的对象 name = 'nick'.__iter__ print(type(name)) # <class 'method-wrapper'> 2.迭代器对象 执行可迭代对象的__iter__方法,拿到的…
python3中range(10)就 是迭代器 列表生成式 #列表生成式 a=[0,1,2,3,4,5] b=[] for index,i in enumerate(a): a[index]+1 print a c=[] for i in a: c.append(i+1) print c a=[i+1 for i in range(5)] print a a = map(lambda x:x+1, [1, 2, 3, 4, 5, 6]) for i in a: print i 生成器 通过列表生…
回顾下上次的内容 转码过程: 先decode  为 Unicode(万国码 ) 然后encode 成需要的格式     3.0 默认是Unicode  不是UTF-8 所以不需要指定  如果非要转为UTF-8  就再指定 变量的查找顺序: 1 从里往外找,先找自己本地的local  没有就会去上一级找,直到找到此变量,     全局变量不能在函数里改变指的是纯字符的, list 及字典等会改变 函数递归:   一层一层进去, return 一层一层出来   特点: # 明确的结束条件 # 问题规…