我在python中有以下代码示例:
def get_objects():
print 'Called get_objects'
return [1, 2, 3, 4, 5]
def main():
for i in get_objects():
print i
main()
输出如下:
Called get_objects
1
2
3
4
5
所以我的问题是为什么get_objects()只调用一次?为什么每次尝试都不会获取数据?
答案 0 :(得分:6)
因为这正是for循环在Python中的工作原理。在循环开始之前,in
运算符右侧的表达式(在计算时必须返回可迭代的表达式)仅在一次中进行计算。然后,for循环遍历该评估返回的迭代。
以下是docs *:
的摘录for语句用于迭代序列的元素 (例如字符串,元组或列表)或其他可迭代对象:
for_stmt ::= "for" target_list "in" expression_list ":" suite ["else" ":" suite]
表达式列表评估一次;它应该产生一个可迭代的 对象
*注意:我添加了粗体。