在蟒蛇,如果我有修改整數列表的遞歸函數,並假設該列表是大的,這是更快的事:保持清單作爲一個全局變量,而不是作爲一個參數傳遞,或傳遞作爲一個論點,而不是全球?什麼是更快,遞歸或全局變量?
回答
列表是由ADRESS傳遞,所以額外的開銷僅僅是單一的功能參數(指針)。我不認爲這是顯而易見的。
你要測試自己,但我會感到驚訝,如果這將是顯著。
Python的經過值參考*一切*反正(即:Python中有作爲通沒有這樣的事情由值) – NullUserException
傳遞不變類型最終看起來很像傳遞的價值,因爲在功能所做的更改不會影響調用者的值。 – PaulMcG
@PaulMcGuire那麼,當你有一個不可變的類型時,你*無法*按照定義對對象進行修改。我想你所描述的行爲就像'def fun(x):x =
對於快速和乾淨的代碼,你應該使用迭代的方法進行遞歸(只要沒有算法替代),帶有自定義堆棧,而不是全局。
如果列表按引用傳遞,並在遞歸函數不重複,那麼性能差異可以忽略不計,你應該使用哪種方法將導致更加清晰和易於維護的代碼。通常這會傳遞數組作爲參數,但並非總是如此。
- 1. php遞歸全局變量?
- 2. 爲什麼遞歸使用全局變量而不是本地變量時更快?
- 3. 使用全局變量將全局變量遞歸到迭代
- 4. 爲什麼我的全局變量不是全局變量?
- 5. python中的全局變量和遞歸
- 6. 遞歸過程中的全局變量
- 7. 僅使用全局變量的遞歸
- 8. 遞歸全局變量。 Python的
- 9. 全局變量javascript,這是更快的「varname」或「window.varname」
- 10. 全局變量快遞的node.js
- 11. 什麼是JavaScript中的全局變量?
- 12. 沒有全局變量或函數參數的遞歸調用
- 13. PHP中的全局常量:使用全局變量還是定義變量更安全?爲什麼?
- 14. 爲什麼Javascript全局變量不是全局的?
- 15. C:哪個更快,訪問全局變量或傳遞函數指針
- 16. 什麼在FLASH中佔用更多空間?靜態變量或全局變量
- 17. 使Javascript成爲全局遞歸循環的局部變量
- 18. 什麼是模塊變量與全局變量?
- 19. Android - 遞增全局變量
- 20. 傳遞全局變量
- 21. 爲什麼閉包比JavaScript中的全局變量更安全?
- 22. 非局部變量和全局變量有什麼區別?
- 23. 爲什麼局部變量會殺死我的全局變量?
- 24. 什麼是「安全變量」?
- 25. PHP中的全局變量或傳遞變量? (性能)
- 26. 全局變量或棘手的變量傳遞計劃?
- 27. 全局變量有什麼不好?
- 28. 爲什麼#include打破全局變量?
- 29. Javascript全局變量或對象變量
- 30. 爲什麼不將全局變量值傳遞給函數?
你能顯示該功能嗎? – mgilson
如果有疑問,請用'timeit'定時。 –
你有沒有試過分析? –