使用块语句与使用python中的函数

时间:2012-02-08 08:42:28

标签: python performance function block

哪一个在性能方面更好:

def check():
   if (statement1 and
       statement2 and
       statement3):
     return True
   else: 
     return False

def doIt():
   if check():
     perform()

VS

def doIt():
   if (statement1 and
       statement2 and
       statement3):
      perform()

3 个答案:

答案 0 :(得分:4)

不要打扰。前者更具可读性,使用它并且如果您的应用程序遇到性能问题,请对代码进行概要分析。如果您将此识别为问题,则可以内联函数调用。

一般来说,函数调用在Python中很昂贵,因此如果调用check将在循环中运行非常多次,则会影响性能。即便如此,在一开始就将其列入内容可能不是一个好主意。

答案 1 :(得分:2)

如果(并且仅当)您遇到性能问题,time it自己:

% python -m timeit -c '
statement1 = True
statement2 = True
statement3 = True

def perform():
    pass

def check():
    if (statement1 and
        statement2 and
        statement3):
        return True
    else:
        return False

def doIt():
    if check():
        perform()

doIt()
'
1000000 loops, best of 3: 1.37 usec per loop

如果您没有遇到性能问题,请关注The Zen of Python并记住what Donald Knuth said about premature optimisation

答案 2 :(得分:0)

仅仅从我的基本软件知识来看,我认为函数调用会花费额外的精力,然后直接在边块编码。

通常,函数调用必须记录当前的编码指针,以便稍后从函数调用返回。

函数应该使您的代码更具可读性,并且可重用的函数易于调试和维护。