在Python中定义嵌套函数

问题描述 投票:0回答:1

我正在通过介绍嵌套函数的DataCamp课程学习。讨论转向在另一个函数内部创建一个函数的想法,如下所示:

def foo(thing):
    def bar(other_thing):
        third_thing = other_thing*2    
        return third_thing
    return bar

虽然我了解嵌套函数的概念,但在函数内部添加函数定义不是不必要地复杂吗?不应将函数bar()定义为outside函数foo(),而只能在函数内部定义call,这样避免了每次调用bar()时定义函数foo()所浪费的时间?还是在函数bar()中定义函数foo()会节省通过全局定义bar()占用的内存?

这里的最佳做法是什么? ...还是我基本上只是概述了两个问题,最终的方法取决于程序员的决定?

python function memory-management nested time-complexity
1个回答
0
投票

如所写,您的函数将返回function,而不是值。此方法的主要用途是作为结束。注意我在这里所做的微妙更改:

def foo(thing):
    def bar(other_thing):
        third_thing = other_thing * thing  #  < changed 2 to thing
        return third_thing
    return bar

现在使用参数foo调用thing创建一个函数bar,该函数会将您输入的任何参数乘以thing。它的行为就像一种“功能工厂”。

所以您可以做喜欢的事情

times_three_function = foo(3)

然后times_three_function(2) = 6

© www.soinside.com 2019 - 2024. All rights reserved.