好吧,我試圖扔在一些真正大量的蟒蛇評估 - 10 ^(10^120)的秩序 - 然後我意識到是相當巨大。無論如何,我然後退到10 ** 10 ** 5和10 ** 10 ** 6。檢查兩者的時間差異使我感到這種有點奇怪的發現,我認爲這是一種低效率。Python是否每次使用resut重新評估算術運算?
的發現是,當我試圖cProfile.run("x=10**10**6")
花0.3秒和cProfile.run("print 10**10**6")
了40年代。
然後我試圖x= 10**10**6
歷時幾乎沒有時間,但此後每次我解釋x
時間(後面x
進入),這將需要很長一段時間(40年代我想)。所以,我假設每次我解釋x
它都會再次計算整個值。
所以我的問題是:是不是非常低效?假設我已經在一個模塊中聲明瞭一些變量,x= 10**10
,並且每當我參考x
時,python解釋器會一次又一次計算10**10
的值?
血淋淋的細節將不勝感激。
Python解釋器中的>>> print x'和>>> >>>之間在計算時間方面確實沒有區別。他們都在做同樣的事情。大部分時間可能會被字符串轉換所佔用。 – senderle 2012-07-06 22:14:23
'參考'與'print'不一樣。您可以整天以很少的成本引用'x'變量。當你使用REPL來執行時,有一個隱含的'__repr__':'x [enter]' – jdi 2012-07-06 22:15:21