簡體   English   中英

Python 是否在每個循環中為變量創建/分配值比在循環外創建/分配變量需要更多的內存/時間?

[英]Python Does creating/assigning a value to a variable every loop take more memory/time than creating/assigning a variable outside the loop?

例如:

for i in range(5000):
    a = "some words"
    # Other things

對比

a = "some words"
for i in range(5000):
    # Other things

我想第二個會更好,但它到底好多少? 在循環外放置一些代碼可能更有效,但在使用變量之前立即分配變量時,調試和閱讀也更容易。

直觀地說,在普通 cPython 中,由於沒有可能將賦值提升到循環之外的即時編譯器,我們希望 option2 更快。

有關“編譯器提升”的更多信息,請參見此處。

你可以自己試試。

import timeit

foo = '''
for i in range(5_000):
    a = "some words"
'''

bar = '''
a = "some words"
for i in range(5_000):
    pass
'''

print(timeit.timeit(foo, number=10_000))
print(timeit.timeit(bar, number=10_000))

給我:

1.3565055000000001
0.9187005000000001

請注意,盡管與您的應用程序正在執行的任何其他操作相比,這種速度差異可能毫無意義,我建議您選擇您認為最容易理解和維護的任何內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM