在Django,如果我写:
for i in User.objects.all():
i.active()
我知道我可以将变量设置为User.objects.all()的当前状态,然后运行循环,但我想知道python正在做什么。 Python只会获取一次用户列表,然后迭代该列表吗?或者它会在每次迭代时查询数据库吗?
答案 0 :(得分:2)
for_stmt ::= "for" target_list "in" expression_list ":" suite
["else" ":" suite]
表达式列表评估一次
这部分内容与Django没有任何关系。在for x in blah
之类的语句中,blah
仅在循环开始时计算一次。 (从理论上讲,对象可能会在每次迭代时都做其他昂贵的事情,但正如aus_lacy的答案所示,Django并没有这样做。)
答案 1 :(得分:1)