python iter函数用法
2021-07-20 12:07
标签:read ble sel logs stop next creat 无法 就是 Python 3中关于iter(object[, sentinel)]方法有两个参数。 使用iter(object)这种形式比较常见。 iter(object, sentinel)这种形式一般较少使用 Python官方文档对于这种形式的解释很容易理解。 此时,object必须是集合对象,且支持迭代协议(iteration protocol)或者支持序列协议(sequence protocol)。 说白了,也就是实现了__iter__()方法或者__getitem__()方法。 Python官方文档对于这种形式的解释是:“ If the second argument, sentinel, is given, then object must be a callable object. The iterator created in this case will call object with no arguments for each call to its 这句话的意思是说:如果传递了第二个参数,则object必须是一个可调用的对象(如,函数)。此时,iter创建了一个迭代器对象,每次调用这个迭代器对象的__next__()方法时,都会调用object。 如果__next__的返回值等于sentinel,则抛出StopIteration异常,否则返回下一个值。 在文件读取时使用: python iter函数用法 标签:read ble sel logs stop next creat 无法 就是 原文地址:https://www.cnblogs.com/xiao-apple36/p/9519114.htmliter函数用法简述
1,iter(object)
l = [1, 2, 3]
for i in iter(l):
print(i)
2,iter(object, sentinel)
__next__()
method; if the value returned is equal to sentinel,StopIteration
will be raised, otherwise the value will be returned.”。 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):
# = 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