重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
今天我们来介绍下Python基础教程学习之iter() 方法另外的用法。据说很少有人知道这个用法!
专注于为中小企业提供成都做网站、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业道县免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。一、上代码、学用法
我们都比较熟悉 iter(obj),会返现一个迭代器,如果 obj 不是可迭代对象,则会报错。但其实如果仔细看官方文档,会发现 iter() 方法其实是接受两个参数的,文档说明如下
iter(object[, sentinel])
sentinel 英文翻译为 哨兵。
sentinel 参数是可选的,当它存在时,object 不再传入一个可迭代对象,而是一个可调用对象,通俗点说就是可以通过()调用的对象,而 sentinel 的作用就和它的翻译一样,是一个“哨兵”,当时可调用对象返回值为这个“哨兵”时,循环结束,且不会输出这个“哨兵”。
可能有点难懂,用一个简单需求来说明,需求说明如下:
心里想一个[1, 10]范围的数,然后代码开始随机,当随机到想的数时停止,看每次代码需要随机几次。
实现分析:看起来应该很简单,random,然后加一个if判断即可,但是用 iter() 来实现更简单。实现代码如下:
from random import randint def guess(): return randint(0, 10) num = 1 # 这里先写死心里想的数为5 for i in iter(guess, 5): print("第%s次猜测,猜测数字为: %s" % (num, i)) num += 1 # 当 guess 返回的是 5 时,会抛出异常 StopIteration,但 for 循环会处理异常,即会结束循环