python中的函数计算量是否昂贵?例如,如果我有很多循环而且我调用了我定义的函数,那么在主代码中编写函数的材料要贵得多吗?
优秀的程序员应该怎样做才能使他的代码尽可能高效?
答案 0 :(得分:3)
与你在里面做的事情相比,函数调用的开销相对微不足道......最好有一个包含多个函数的干净代码,这些函数可以实现一个作业而不是1000行不可读的意大利面条代码。在Python中(在每种语言中都应如此),Readability counts。
但是,如果您正在调用函数,则开销可能很重要(创建堆栈,返回值,跳转到代码地址等) 。例如,函数可以与迭代器一起使用并返回迭代器上应用的结果,而不是操作单个数据:
res = []
for x in elems:
res.append(my_function(x))
res = my_function(x) # this solution is way better for performance
如果您想估算一个函数调用的成本,可以使用... timeit
module:)
答案 1 :(得分:1)
Python调用的开销很小,因为当前帧被推送到堆栈上,需要为正在调用的代码对象创建一个新帧。
但是这个开销相对较小,除非你在循环中连续调用一个小函数,否则你不会注意到这个固定成本。
您应该始终分析您的实际算法的计算复杂性,并尝试首先将其最小化。只有然后你应该看看内联函数。使用timeit
module来衡量选项之间的时间差异。
但还要记住Zen of Python:
- 可读性很重要。
正确使用函数可以提高代码的可读性。不要过分试图将它们抛弃,以获得微小的性能提升。