简单的问题:
为什么
(7**3) ** 24 % 25
几乎不需要运行时间,但是 7 ** 3 ** 24 % 25
不会停止运行?(7**3) ** 24 % 25
几乎不需要运行时间,但是 7 ** 3 ** 24 % 25
不会停止运行?指数运算从右到左计算from right to left。
因此,7 ** 3 ** 24
被计算为7 ** 282429536481
(困难),而(7**3) ** 24
只是343 ** 24
(简单)。
>>> def foo():
return 7 ** 3 ** 24 % 25
...
>>> def bar():
return (7**3) ** 24 % 25
...
>>> dis.dis(foo)
2 0 LOAD_CONST 1 (7)
3 LOAD_CONST 5 (282429536481)
6 BINARY_POWER
7 LOAD_CONST 4 (25)
10 BINARY_MODULO
11 RETURN_VALUE
>>> dis.dis(bar)
2 0 LOAD_CONST 7 (1L)
3 RETURN_VALUE
pow(7, 282429536481, 25)
- wim
%
的优先级高于**
,那么它将计算 343 的 24 次方,这几乎不需要时间。否则它与快速表达式相同。 - Elliot Gorokhovsky