python调用无参函数_为什么无参数函数调用执行得更快?

我设置了一个简单的自定义函数,它接受一些默认参数(Python3.5):def foo(a=10, b=20, c=30, d=40):

return a * b + c * d

并在指定或不指定参数值的情况下对其进行不同的调用:

不指定参数:

^{pr2}$

指定参数:%timeit foo(a=10, b=20, c=30, d=40)

The slowest run took 12.83 times longer than the fastest. This could mean that an intermediate result is being cached

1000000 loops, best of 3: 446 ns per loop

如您所见,指定参数的调用和未指定参数的调用所需的时间有一些明显的增加。在简单的一次性调用中,这可能可以忽略不计,但如果对函数进行大量调用,开销会扩大并变得更加明显:

无参数:%timeit for i in range(10000): foo()

100 loops, best of 3: 3.83 ms per loop

带参数:%timeit for i in range(10000): foo(a=10, b=20, c=30, d=40)

100 loops, best of 3: 4.68 ms per loop

同样的行为也存在于python2.7中,这些调用之间的时间差实际上要大一点foo() -> 291ns和{}

为什么会这样?我是否应该在调用期间尽量避免指定参数值?在

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值