在 Python 代码中,我多次看到类似的结构:
def spam():
...
def eggs():
...
那些。我们在函数eggs()中声明一个函数spam()。这种结构的目的是什么?唯一想到的是范围,因为 该函数eggs()将在函数之外不可见spam()。
在 Python 代码中,我多次看到类似的结构:
def spam():
...
def eggs():
...
那些。我们在函数eggs()中声明一个函数spam()。这种结构的目的是什么?唯一想到的是范围,因为 该函数eggs()将在函数之外不可见spam()。
原因:
可见区域。也许您想将函数内部的代码包装在一个函数中以简化代码,但同时,您不希望内部辅助函数突出。
例如,您有一个将列表作为参数的函数,对它们执行操作并返回结果。里面的代码是重复的,需要做一些事情:
重复代码的通常解决方案是将其包装在一个函数中,因为 该功能非常具体,我们不希望它在全球范围内可见,我们在本地可见性中创建它:
它还用于:
闭包
咖喱
装饰器
一个函数可以是一个回调,如果我们有闭包,这很方便,例如,一个典型的用例是将一个函数传递给某个对象,该对象以某种方式修改了我们从中传递它的当前对象的字段。例如:
var 进度 = 0; 新 obj((increment)->{progress += increment}).start();在这种情况下,我们创建一个新对象,向其传递回调以增加进度计数器并使用 start() 方法启动该对象;
并且,例如,在 js 中,这样的定义允许您使用方法创建对象。