gpt4 book ai didi

python - 每次使用结果时,Python 是否都会重新评估 bignums 的算术运算?

转载 作者:行者123 更新时间:2023-11-28 19:33:33 25 4
gpt4 key购买 nike

好吧,我试图在 python 上进行一些非常大的评估 - 数量级为 10^(10^120) - 然后我意识到它相当巨大。无论如何,然后我退回到 10**10**5 和 10**10**6。检查两者的时差让我发现了这个有点奇怪的发现,我认为这是一种低效率。

结果是,当我尝试 cProfile.run("x=10**10**6") 时,它花费了 0.3scProfile。 run("print 10**10**6") 花了 40s

然后我尝试了 x= 10**10**6 这几乎没有花时间,但此后每次我解释 x ( x 后跟 enter)这会花费很长时间(我想是 40s)。因此,我假设每次我解释 x 时,它都会重新计算整个值。

所以我的问题是:这不是非常低效吗?假设我在模块中声明了一些变量 x= 10**10,每次我引用 x 时,python 解释器都会计算 10 的值**10 一遍又一遍?

血淋淋的细节将不胜感激。

最佳答案

Python 可以使用二进制计算非常大的数字,但是要将其转换回可以显示的数字是很多的工作。

例如:(以及很多 Euler 项目所问的问题)-

比方说,2 ** 32768

的所有数字的总和是多少

Python 可以使用 BigNum 将结果直接计算为一个数字,但只要您这样做:

sum(int(c) for c in str(my_big_number)) # ouch - that's a lot of digits to produce and store

这就是当您键入(然后按回车)变量名/打印变量名时发生的情况,它正在执行转换。

关于python - 每次使用结果时,Python 是否都会重新评估 bignums 的算术运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11370310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com