好的,所以這個問題的措辭很難說。爲什麼Python定義函數的執行速度比「def」範圍之外的全局腳本更快?
不過,我已經寫在Python 3.5.2兩個腳本:
import time
t0 = time.clock()
def hello():
a = []
for i in range(10000000):
a.append(i)
hello()
t1 = time.clock()
print((t1-t0))
日期:1.0960211284655088
和
import time
t0 = time.clock()
a = []
for i in range(10000000):
a.append(i)
t1 = time.clock()
print((t1-t0))
日期:1.432725885821128
第一個腳本運行更快地在一個已定義的函數中,然後調用;然而,我不知道這是爲什麼,我想了解,所以我可以學習優化代碼。
這是一個關於Python 3這個特定方面的問題。我知道列表推導和map()是做這個特定迭代的很多,更快和更pythonic的方法。
獨立於您對優化性能的追求,我覺得它總是*總是*更好地將代碼放在函數中,而不是放在文件範圍內。這使得將腳本轉換爲可重用模塊變得更加容易,並且讓代碼更易於理解繼承了您的內容的人員,然後再開始新的工作。 我個人認爲,即使是主腳本應該具有在文件範圍內無碼以外: 如果__name__ ==「__main__」: callToEntryFunction() 附:對不起,無法弄清楚如何在評論中格式化代碼。 : - \ – antred
我完全同意。但是,用python進行快速入侵(就像以jupyter爲例)。如果在Python中查看大量數據,將其放入函數中可能會更快(性能明智)。當然,您可以始終使用R或Julia lol;但這是無關緊要的。 – dysfunctional