Python求幂运算顺序与分组

2024-03-29 11:13:37 发布

您现在位置:Python中文网/ 问答频道 /正文

简单问题: 为什么(7**3) ** 24 % 25几乎没有时间运行,但是7 ** 3 ** 24 % 25没有终止?你知道吗


Tags: 时间
1条回答
网友
1楼 · 发布于 2024-03-29 11:13:37

指数群from right to left。你知道吗

因此,7 ** 3 ** 24被评估为7 ** 282429536481(硬),而(7**3) ** 24只是343 ** 24(简单)。你知道吗


作为一个有趣的旁注:CPython,它有一个窥视孔优化,能够优化掉“容易”的情况下不断折叠。但“硬性”的情况只涉及到折叠3 ** 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        

相关问题 更多 >