可迭代的对象:带有__iter__方法的,就是迭代器.字符串,列表,元祖,字典,集合,文件,都是可迭代的 可迭代的对象使用了__iter__方法的,就是迭代器,带有__next__,__iter__方法. l = [1,2,3,4,6] # l被称为可迭代的对象 l1 = l.__iter__() # l1为迭代器 l1.__iter__() # 迭代器的两种方法 l1.__next__ Python 中的for循环 就是用了迭代器的原理 生成器: 1.生成器函数:常规函数定义,但是,使用yie…
本文分成6个部分: 1.iterable iterator区别 2.iterable的工作机制 3.iterator的工作机制 4.for循环的工作机制 5.generator的原理 6.总结 1.iterable iterator区别 要了解两者区别,先要了解一下迭代器协议: 迭代器协议是指:对象需要提供__next__()方法,它返回迭代中的元素,在没有更多元素后,抛出StopIteration异常,终止迭代. 可迭代对象就是:实现了迭代器协议的对象. 协议是一种约定,可迭代对象实现迭代器协…
可迭代对象 关注公众号"轻松学编程"了解更多. 1.列表生成式 list = [result for x in range(m, n)] g1 = (i for i in range(101)) print(type(g1)) print(g1) print(g1.__next__()) 输出: <class 'generator'> <generator object <genexpr> at 0x0000024E6AC08F10> 0 g1 =…
Python 的 asyncio 类似于 C++ 的 Boost.Asio. 所谓「异步 IO」,就是你发起一个 IO 操作,却不用等它结束,你可以继续做其他事情,当它结束时,你会得到通知. Asyncio 是并发(concurrency)的一种方式.对 Python 来说,并发还可以通过线程(threading)和多进程(multiprocessing)来实现. Asyncio 并不能带来真正的并行(parallelism).当然,因为 GIL(全局解释器锁)的存在,Python 的多线程也不…
一.迭代器 python 一切皆对象 能被for循环的对象就是可迭代对象 可迭代对象: str,list,tuple,dict,set,range 迭代器: f1文件句柄 dir打印该对象的所有操作方法 s = 'python' print(dir(s)) 执行输出: ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__…
本文目的 解释yield关键字到底是什么,为什么它是有用的,以及如何来使用它. 协程与子例程 我们调用一个普通的Python函数时,一般是从函数的第一行代码开始执行,结束于return语句.异常或者函数结束(可以看作隐式的返回None).一旦函数将控制权交还给调用者,就意味着全部结束.函数中做的所有工作以及保存在局部变量中的数据都将丢失.再次调用这个函数时,一切都将从头创建. 对于在计算机编程中所讨论的函数,这是很标准的流程.这样的函数只能返回一个值,不过,怎么才能创建能产生一个序列的函数呢?换…
一.函数名 函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量,单纯print()出的是一个内存地址. def func(): print('你说你有点难追') print(func) #<function func at 0x000001F812922EA0> ########################单纯打印函数名打印的是一串内存地址############################## def func(): print('花店玫瑰') other=func…
闭包 1, 闭包是嵌套在函数中的 2, 闭包是内层函数对外层函数的变量(非全局变量)的引用(改变) 3,闭包需要将其作为一个对象返回,而且必须逐层返回,直至最外层函数的返回值 闭包例子: def a1(): name = 'wk' def a2(): print(name) return a2 闭包函数的作用 非闭包函数:随着函数的结束临时空间关闭 def func1(s): n = 1 n += s print(n) func1(3) func1(3) #每次函数结束临时空间关闭 func1(…
介绍 可迭代的:内部实现了__iter__方法 迭代器:内部实现了__iter__,__next__方法 生成器:yield,yield from 使用 __iter__() __next__() __length_hint__() # 长度 都可以使用for循环 只有迭代器可以使用next() l = [1,2,3,4] l1 = [1,2,3,4].__iter__() for item in l:print(item) # # # for item in l1:print(item) #…
迭代器: for 循环可以循环的就是可迭代对象. 可迭代对象:str, list, tuple, dict, set, range. 迭代器:f1文件句柄. 可迭代协议: 可以被迭代要满足的要求就叫做可迭代协议.可迭代协议的定义非常简单,就是内部实现了__iter__方法. 可迭代对象: 内部含有__iter__方法的对象就叫做可迭代对象. 如何判断:两种方式: s = 'guqingqiu' # print(dir(s)) print('__iter__' in dir(s)) # True…