我正在通过介绍嵌套函数的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()
占用的内存?
这里的最佳做法是什么? ...还是我基本上只是概述了两个问题,最终的方法取决于程序员的决定?
如所写,您的函数将返回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