哪一个在性能方面更好:
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()
答案 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)
仅仅从我的基本软件知识来看,我认为函数调用会花费额外的精力,然后直接在边块编码。
通常,函数调用必须记录当前的编码指针,以便稍后从函数调用返回。
函数应该使您的代码更具可读性,并且可重用的函数易于调试和维护。