好吧,我试图扔在一些真正大量的蟒蛇评估 - 10 ^(10^120)的秩序 - 然后我意识到是相当巨大。无论如何,我然后退到10 ** 10 ** 5和10 ** 10 ** 6。检查两者的时间差异使我感到这种有点奇怪的发现,我认为这是一种低效率。Python是否每次使用resut重新评估算术运算?
的发现是,当我试图cProfile.run("x=10**10**6")
花0.3秒和cProfile.run("print 10**10**6")
了40年代。
然后我试图x= 10**10**6
历时几乎没有时间,但此后每次我解释x
时间(后面x
进入),这将需要很长一段时间(40年代我想)。所以,我假设每次我解释x
它都会再次计算整个值。
所以我的问题是:是不是非常低效?假设我已经在一个模块中声明了一些变量,x= 10**10
,并且每当我参考x
时,python解释器会一次又一次计算10**10
的值?
血淋淋的细节将不胜感激。
Python解释器中的>>> print x'和>>> >>>之间在计算时间方面确实没有区别。他们都在做同样的事情。大部分时间可能会被字符串转换所占用。 – senderle 2012-07-06 22:14:23
'参考'与'print'不一样。您可以整天以很少的成本引用'x'变量。当你使用REPL来执行时,有一个隐含的'__repr__':'x [enter]' – jdi 2012-07-06 22:15:21