?先说答案,根据代码中的上下文,这里的temp是一个字典dict对象,而且它是通过for循环每次获取可迭代对象(Iterable)中的一个值.
在该代码中就是每次获取student_infos(字典列表)中的每一个字典对象(student_infos[0]、student_infos[1]...)。
下面对几个概念进行介绍
可迭代对象(Iterable)
Python中可以直接作用于for循环的对象统称为可迭代对象:Iterable。 上面的student_infos(字典列表)就是一个可迭代对象。list、dict、str这些都是可迭代对象。更加一般的如果一个对象拥有__iter__方法,其是可迭代对象。
而通过for循环就能获取这些可迭代对象中的每个数据,这个数据可能是基本数据类型如整数int, 字符,字符串等,另外也可以是字典dict、列表list等这些可迭代对象。在上面的代码中就是dict。
迭代器(Iterator)
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator 迭代器是一个惰性计算的序列,它需要不断调用next()函数才能不断返回下一个数据。
list、dict、str虽然是可迭代对象(Iterable),却不是迭代器(Iterator)。不过可以通过iter()函数获得一个Iterator对象。
生成器(generator)
在 Python 中,使用了 yield 的函数被称为生成器(generator)。 生成器是一种特殊的迭代器,生成器自动实现了"迭代器协议”(即iter和next方法)。跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,调用一个生成器函数,返回的是一个迭代器对象。
下图表示了这几个概念之间的关系: />
查看我的更多相关回答:溪亭日暮:汇编 | 我的AI 技术回答?zhuanlan.zhihu.com
参考 |