Python 完成了哪些优化以使代码快速完成?

Python 完成了哪些优化以使代码快速完成?,python,python-3.x,optimization,Python,Python 3.x,Optimization,我在解决我遇到的一个问题,从0到2009 mod 8,3的幂和是多少 我用纸和笔得到了答案,并试图用一些简单的python来验证它 print(sum(3**k for k in range(2010)) % 8) 我很惊讶它这么快就给出了答案。我的问题是,口译员使用了哪些优化或技巧来如此快速地获得答案?没有任何花哨的优化会导致您观察到的快速响应。计算机的绝对速度比你预期的要快得多。没有,计算机要做的计算并不多 您的代码相当于: >>> a = sum(3**k for k

我在解决我遇到的一个问题,从0到2009 mod 8,3的幂和是多少

我用纸和笔得到了答案,并试图用一些简单的python来验证它

print(sum(3**k for k in range(2010)) % 8)

我很惊讶它这么快就给出了答案。我的问题是,口译员使用了哪些优化或技巧来如此快速地获得答案?

没有任何花哨的优化会导致您观察到的快速响应。计算机的绝对速度比你预期的要快得多。

没有,计算机要做的计算并不多

您的代码相当于:

>>> a = sum(3**k for k in range(2010))
>>> a % 8
4
a是一个959位数的数字——对计算机来说这不是一个大任务


试着在2010年末加上两个0,你会发现这需要相当长的时间。

唯一的优化是,3**k的每个实例都使用与k中的位数成比例的乘法进行计算,它本身不会乘以3到k-1倍

如前所述,如果你将2010年提高到20100年、201000年或…,这将需要更长的时间,因为3K变得非常大。但是,在这些情况下,您可以将其改写为,例如

print(sum(pow(3, k, 8) for k in range(201000)) % 8)
在内部,pow3,k,8仍然执行与k中的位数成比例的乘法,但不需要在内部保留任何大于模的平方8**2的整数