繁体   English   中英

这些for循环中哪个更有效/更好的循环编码方式

[英]which of these for-loops is more efficient/the better way to code the loop

python中这两个for循环哪个更好? 我已经“假设”编译器足够聪明,可以只执行 json.loads 一次,并且自己将数据存储在一个临时变量中,以便它可以维护处理 for 循环所需的迭代器。 但后来我开始怀疑我是否弄错了,第一种风格会导致不必要的额外步骤。

for employee in json.loads(response.content)

或者

temp = json.loads(response.content)
   for employee in temp

尽管两者本质上相同,但有一个很好的理由支持临时值:它可以让您在尝试迭代结果之前捕获对json.loads的调用中的任何错误。 这与保持try语句中的代码尽可能集中是一致的。

try:
    employees = json.loads(response.content)
except JSONDecodeError:
    # Maybe log an error message
    # Maybe just reraise the exception
    employees = []

for employee in employees:
    ...

文档中可以清楚地看出:

 for_stmt ::= "for" target_list "in" expression_list ":" suite ["else" ":" suite]

表达式列表被评估一次;

所以你的担心是没有根据的,第一种方法更可取,除非你想再次重用数据或者将它写在for行上会使行太长。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM