python内部函数和比外部函数快_在Python中,嵌套函数比全局函数快吗?

我更喜欢使用嵌套函数,而不是Python中的方法或全局函数。所以我决定测试它们的性能,因为当你在另一个函数中定义一个函数时,在外部函数的每次调用中都会有内部函数定义的开销。在

充其量我希望全局函数稍微快一点,但是令人惊讶的是嵌套函数更快。有人知道为什么吗?在

这是我的代码:from time import clock

def a(n):

return n + 1

def b1(loopcount):

return sum([a(n) for n in range(loopcount)])

def b2(loopcount):

def a(n):

return n + 1

return sum([a(n) for n in range(loopcount)])

powers = [5, 6, 7]

b1times = []

b2times = []

print " ", "".join(["{:^10d}".format(n) for n in powers])

for i in range(5):

for power in powers:

t = clock()

b1(10**power)

b1times.append(clock() - t)

for power in powers:

t = clock()

b2(10**power)

b2times.append(clock() - t)

print "b1:", "".join(["{:^10.5f}".format(n) for n in b1times])

print "b2:", "".join(["{:^10.5f}".format(n) for n in b2times])

print ""

b1times = []

b2times = []

这是我电脑上的结果:

^{pr2}$

更新:使用@Janne Karila的评论

现在我再叫b1和b2了,b1变快了。因此,正如@Kos和@Pavel anosov在他们的回答中所说的,有几个因素会影响这里的速度,你不能做一般性的陈述。

谢谢大家!在from time import *

def a1(n):

return n + 1

def b1(n):

return a1(n)

def b2(n):

def a2():

return n + 1

return a2()

powers = [4, 5, 6]

b1times = []

b2times = []

print " ", "".join(["{:^10d}".format(n) for n in powers])

for i in range(5):

for power in powers:

t = clock()

sum([b1(n) for n in range(10**power)])

b1times.append(clock() - t)

for power in powers:

t = clock()

sum([b2(n) for n in range(10**power)])

b2times.append(clock() - t)

print "b1:", "".join(["{:^10.5f}".format(n) for n in b1times])

print "b2:", "".join(["{:^10.5f}".format(n) for n in b2times])

print ""

b1times = []

b2times = []

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值