當我在Python解釋器中加入大a(20個數字)b(4個數字)c(20個數字)的** b%c時,我看到Python計算它很漂亮幾乎像pow一樣快速(a,b,c)。我期望Python首先計算一個** b的另一個行爲,然後獲得結果的模數(%),這樣的計算會花費更多的時間。場景背後的魔力在哪裏?大數字的Python **和%運算符的行爲
1
A
回答
2
除了Python支持任意精度的整數之外,幕後並沒有什麼魔法,並且很好的實現。它確實計算了a ** b,然後%c。
4
20個數字在現代計算機上可笑地很小。嘗試2000的數字,你可能會看到一個區別。
而且,過去的這個問題是有關:How did Python implement the built-in function pow()?
0
今天的電腦是驚人的快,非常複雜的計算在什麼似乎像任何時候都可能發生。你需要重複這樣的計算很多次才能看到延遲;我會從一百萬開始。
6
如果你輸入到Python解釋是這樣的:
20937505974095709374 ** 3438
然後看到了幾秒鐘等待。然後嘗試:
20937505974095709374 ** 3438 % 6
而且看到沒有等待,想知道爲什麼是有區別的,那麼延遲您在第一時間看到實際上是你的終端以緩衝並打印大量的時間您剛剛在屏幕上創建的編號。
+1
是的,這正是問題所在,正如你可以通過將每個計算分配給一個變量而看到的比打印它。 – kindall
相關問題
- 1. Python:與模運算符的奇行爲
- 2. 作爲字符的數學運算符
- 3. 評估在Python中的運算符和數字的數組
- 4. 使用python的**運算符和*運算符時的符號
- 5. %python字符串運算符
- 6. Lexing求和運算符和帶符號整數的Python Python
- 7. 在很大的數字上進行算術運算的算法
- 8. 行爲delete運算符的
- 9. 的Python:運算符「+ =」
- 10. 將C字符串解析爲數字和運算符
- 11. Java:將字符串方程拆分爲數字和運算符
- 12. Java和python ^運算符
- 13. Python - 減少函數和|運算符
- 14. 爲什麼'+'運算符的行爲與Matlab字符串一樣?
- 15. 如何計算數字和數學運算符的數組(或字符串)
- 16. Python中的字符串,整型和運算符
- 17. 比較python中的字符串和<comparision運算符
- 18. 爲什麼字符串和數字有單獨的比較函數/運算符?
- 19. 定時運算符+,運算符,運算符*和運算符/
- 20. 數學運算符和Java數字
- 21. Python的布爾和邏輯運算符
- 22. 和Python列表上的運算符
- 23. Python://運算符
- 24. Python:++運算符
- 25. Python:&=運算符
- 26. 如何對非常大的數字進行算術運算
- 27. MySQL的執行字符串作爲數學運算
- 28. SystemVerilog的字符串化(`「)運算符和換行符
- 29. 運算符python參數
- 30. 爲什麼python floor division運算符的行爲如此呢?
您可以使用'pow'有效地計算'(x ** y)%z'。見http://stackoverflow.com/questions/101268/hidden-features-of-python/3371415#3371415 –
謝謝所有參與 – Bole