簡體   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