首页 > 其他分享 >深入分析Iter函数

深入分析Iter函数

时间:2023-06-03 16:03:34浏览次数:34  
标签:... 调用 函数 迭代 iter d6 Iter 深入分析

iter函数还有一个鲜为人知的用法:传入两个参数,使用常规的函数或任何可调用的对象创建迭代器。这样使用时,第一个参数必须是可调用的对象,用于不断调用(没有参数),产出各个值;第二个值是哨符,这是个标记值,当可调用的对象返回这个值时,触发迭代器抛出StopIteration异常,而不产出哨符。

 

 

>>> def d6( ):
...     return randint(1, 6)
...
>>> d6_iter = iter(d6, 1)
>>> d6_iter
<callable_iterator object at 0x00000000029BE6A0>
>>> for roll in d6_iter:
...     print(roll)
...
4
3
6
3

 

注意,这里的iter函数返回一个callable_iterator对象。示例中的for循环可能运行特别长的时间,不过肯定不会打印1,因为1是哨符。与常规的迭代器一样,这个示例中的d6_iter对象一旦耗尽就没用了。如果想重新开始,必须再次调用iter(...),重新构建迭代器。

 

内置函数iter的文档中有个实用的例子。这段代码逐行读取文件,直到遇到空行或者到达文件末尾为止:

with open('mydata.txt') as fp:
    for line in iter(fp.readline, '\n'):
        process_line(line)

 

标签:...,调用,函数,迭代,iter,d6,Iter,深入分析
From: https://www.cnblogs.com/bravesunforever/p/17454082.html

相关文章

  • Oracle partition by 用法及函数
    Oraclepartitionby--函数row_number、rank、dense_rank--row_number:序号,不重复;例如:1,2,3,4,5--rank:排序,重复;例如:1,2,2,2,5--dense_rank:排序,不重复;例如:1,2,2,2,3--sum:求和,本行排名之前(包括本行排名)的总和--count:技术,包括本行排名一共有多少名SELECTt.*FROM(S......
  • Python 函数
    函数返回多个返回值defmultiple_return_value():importdatetimed=datetime.date.today()val_1='年份为:{}'.format(d.year)val_2='月份为:{}'.format(d.month)returnval_1,val_2#只需在return关键字后跟多个值(依次用逗号分隔)val=multip......
  • matlab中通过ode函数求解常微分方程附加简单的钟摆模型
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • 存储函数
    存储函数存储函数是有返回值的存储过程,存储函数的参数只能是IN类型的。具体语法如下:CREATEFUNCTION存储函数名称([参数列表])RETURNStype[characteristic...]BEGIN --SQL语句 RETURN...;END;characteristic说明:DETERMINISTIC:相同的输入参数总是产生相同的结果;N......
  • 函数返回值与指向对象的指针和引用
    定义一个指向对象的指针或则引用不会调用构造函数和析构函数。首先,强调一点,和函数传参一样,函数返回时也会做一个拷贝。从某种角度上看,和传参一样,也分为三种:(1)返回值:返回任意类型的数据类型,会将返回数据做一个拷贝(副本)赋值给变量(return语句后边的变量会生成一个副本给一个临......
  • C++逆向分析——构造函数和析构函数
    构造函数与析构函数构造函数structStudent{inta;intb;Student(){printf("Look.");}voidInit(inta,intb){this->a=a;this->b=b;}};如上代码中,我们发现了存在一个函数,这个函数没有返回类型并且与结构体名称一样,那这段函数在什么时候执......
  • 【C语言】动态内存管理函数的 深度解析 #是不是对数组不能变大变小而烦恼呢?学会动态内
    前言动态内存管理函数可以说很好用,但是有些小危险。所谓动态内存分配,就是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不像数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求......
  • 利用APIFOX对ABAP函数进行调用
    1.安装APIFOX,当然也可以使用在线版,无需下载官网地址:https://apifox.com/ 2.新建项目 3.为项目起一个名称,为相关开发测试人员授权 4.在根目录新增子目录 5.编辑开发/测试/生产环境的地址信息以及默认全局变量 6.将SAP提供的ABAPAPI地址配置进APIFOX,有关ABAP提......
  • 通过定义私有构造函数限制类的实例化
    当在一个类中定义了私有构造函数时,它将限制其他代码在类外部直接实例化该类的对象。这意味着除了类内部的代码,其他代码无法通过调用类的构造函数来创建类的实例。通过定义私有构造函数,可以实现以下几个方面的控制:防止类被意外地实例化:私有构造函数可以确保类的实例化只能在类......
  • 《深度剖析CPython解释器》16. Python函数机制的深度解析(第三部分): 闭包的底层实现
    https://www.cnblogs.com/traditional/p/13580694.html楔子上一篇我们看了函数是如何调用的,这一次我们看一下函数中局部变量的访问、以及闭包相关的知识。函数中局部变量的访问我们说过函数的参数和函数内部定义的变量都属于局部变量,所以它也一样是通过静态的方式进行访问。......