国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python基础教程 > Python基础:iter函数的两个参数

Python基础:iter函数的两个参数

Python中iter函数

头像

2020-10-27 16:37:566727浏览 · 0收藏 · 0评论

Python中的函数非常多,而且使用频繁。今天小编为大家带来Python中iter函数的用法,后续的文章也会有涉及这个函数的运用。


Python 3中关于iter (object[, sentinel)] 方法有两个参数。

使用iter (object) 这种形式比较常见,iter (object, sentinel) 这种形式一般较少使用。


1.iter (object)


Python官方文档对于这种形式的解释很容易理解。

此时,object必须是集合对象,且支持迭代协议(iteration protocol)或者支持序列协议(sequence protocol)。

说白了,也就是实现了__iter__() 方法或者 __getitem__() 方法


l = [1, 2, 3]  for i in iter(l):      print(i)


2.iter (object, sentinel)


Python官方文档对于这种形式的解释是:如果传递了第二个参数,则object必须是一个可调用的对象(如函数)。此时,iter创建了一个迭代器对象,每次调用这个迭代器对象的__next__()方法时,都会调用object。

如果__next__的返回值等于sentinel,则抛出StopIteration异常,否则返回下一个值。


   class TestIter(object):        def __init__(self):            self.l=[1,2,3,4,5]            self.i=iter(self.l)        def __call__(self):  #定义了__call__方法的类的实例是可调用的            item = next(self.i)            print ("__call__ is called,which would return",item)            return item        def __iter__(self): #支持迭代协议(即定义有__iter__()函数)            print ("__iter__ is called!!")            return iter(self.l)    t = TestIter()  # t是可调用的    t1 = iter(t, 3)  # t必须是callable的,否则无法返回callable_iterator    print(callable(t))    for i in t1:        print(i) # 它每次在调用的时候,都会调用__call__函数,并且最后输出3就停止了。 True __call__ is called,which would return 1 1 __call__ is called,which would return 2 2 __call__ is called,which would return 3


在文件读取时使用:


import os import hashlib def bytes2human(n):    # 文件大小字节单位转换    symbols = ('K', 'M', 'G', 'T', 'P', 'E')    prefix = {}    for i, s in enumerate(symbols):        # << 左移” 左移一位表示乘2 即1 << 1=2,二位就表示4 即1 << 2=4,        # 10位就表示1024 即1 << 10=1024 就是2的n次方        prefix[s] = 1 << (i + 1) * 10    for s in reversed(symbols):        if n >= prefix[s]:            value = float(n) / prefix[s]            return '%.2f%s' % (value, s)    return "%sB" % n def get_md5(file_path):    """    得到文件MD5    :param file_path:    :return:    """    if os.path.isfile(file_path):        file_size = os.stat(file_path).st_size        md5_obj = hashlib.md5()  # hashlib        f = open(file_path, 'rb')  # 打开文件        read_size = 0        while read_size < file_size:            read_byte = f.read(8192)            md5_obj.update(read_byte)  # update md5            read_size += len(read_byte)        hash_code = md5_obj.hexdigest()  # get md5 hexdigest        f.close()        print('file: [{}] \nsize: [{}] \nmd5: [{}]'.format(            file_path, bytes2human(read_size), hash_code))        return str(hash_code) def get_filemd5(file_path):    # 使用迭代器读取文件获得MD5    if os.path.isfile(file_path):        file_size = os.stat(file_path).st_size        md5_obj = hashlib.md5()  # hashlib        f = open(file_path, 'rb')  # 打开文件        read_size = 1024        for chunk in iter(lambda: f.read(read_size), b''):  # 使用迭代器读取文件获得MD5            md5_obj.update(chunk)        hash_code = md5_obj.hexdigest()  # get md5 hexdigest        f.close()        print('file: [{}] \nsize: [{}] \nmd5: [{}]'.format(            file_path, bytes2human(file_size), hash_code))        return str(hash_code) if __name__ == '__main__':    md5 = get_md5(        r'C:\README.md')    md5_1 = get_filemd5(        r'C:\README.md') ------------------------输出 file: [C:\README.md] size: [941B] md5: [d22b8f76dcd8cfbfd4669d9d8101077e] file: [C:\README.md] size: [941B] md5: [d22b8f76dcd8cfbfd4669d9d8101077e]


根据示例来看,iter函数还是比较容易理解的,更多Python学习推荐:PyThon学习网教学中心

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

恋臀者| 小妹妹爱大棒棒免费观看电视剧 | 成品人和精品人的区别哪个好| 慢脚APP官方版| 9.1芒果浏览器| 性做爰全过程免费看| 做爰高潮A片(毛片)| 叔嫂发生过关系后的心理变化| 年轻的母亲| 美国《性船》无删减| 春夜影院电视剧免费播放| 亚洲乱熟女-区二区三区山口珠理| 俩个人做AJ的视频教程大全| 免费直播入口在线观看| 交换的温度2HD| 女性左腿又开腿肚子视频大全| 快拨出天我是你母亲歌词监控| 韩漫免费观看在线阅读浸画 | 亚洲无线一线二线三线区别| 《枕边欢情》电影免费观看| 蜜桃臀| 《交换:完美的邻居》3| 黄瓜成视频人APP| 放荡的女兵伦理2| 趁老师睡着破了她的处| 女人的滋味| 免费观看已满十八岁电视剧日剧| 老师穿白色双开真丝旗袍怎么穿 | 亚洲精品国偷自产久色| 丫头把腿开大让我添添| 女生给男生吃小头头| 丈夫不在家儿媳想老公的背景故事 | 法国《监狱伦理3》| 日本双人xX00吃奶视频| 《麦子的秘密2》| 《蜜汁樱桃》笔趣阁全文免费阅读| 南野灯| 叶子媚| 樱花官方IMOMOE官网入口| B站禁止转播404入口| 美国人免费观看高清电视剧的软件