可以在Python中使用太多函数吗?

Nor*_*lik 6 python

这是一个广泛的问题.

当我发现自己必须编写更长更长的脚本时,我发现我的直觉是将所有东西都分解成一口大小的函数; 然而,这最终导致函数调用函数调用函数调用函数....我想知道我是否完全在想错误的方法.

这是删节脚本的样子.对不起,这是一种做作.

def simple_task_1():
    return

def simple_task_2():
    return

def simple_task_3():
    return

def simple_task_4():
    return

def complex_task_1():
    simple_task_2()
    simple_task_3()
    simple_task_4()
    return

def startup():
    simple_task_1()
    complex_task_1()
    simple_task_4()

def finish():
    # other function calls
    return

def main():
    startup()
    finish()
Run Code Online (Sandbox Code Playgroud)

那么,这是使用函数的正确方法吗?有没有一个客观的观点,你可以说你在彼此内部进行了太多的函数调用?我是否应该为只完成一次的任务制作函数?

mgi*_*son 7

Python有一个"递归"限制.如果你点击它,那么你可能使用了太多的函数,否则它可能不是什么大问题 - 通常你只能在递归调用函数时达到递归限制(然后通常因为你做错了什么而且你什么时候没有打破).

功能的关键是让你的生活更轻松.如果你发现你的功能太多而你实际上并没有让你的生活变得更轻松,那么这可能就是一个问题.例如:

def add(x,y):
    return x+y
Run Code Online (Sandbox Code Playgroud)

这是一个非常毫无意义的功能,但最好避免使用它,如果你想要sinc:

def sinc(x):
    return math.sin(x)/x
Run Code Online (Sandbox Code Playgroud)

这可能实际上很有用,因为新函数名称比在其中执行的代码更具描述性.此外,稍后如果您发现需要在x = 0处删除奇点,则可以sinc轻松添加它.

最终,可读性才是最重要的.如果使用函数使代码更容易阅读,那么它可能是值得的(即使你只从一个地方调用它并且可以很容易地内联它).如果你真的关心性能有一些灰色区域(函数执行的时间比内联代码要长一些),但你不应该以此为借口内联难以阅读的内容,除非你能够可靠地演示这是一个性能瓶颈.