今天看自动化的代码,发现有一些嵌套函数。函数A里又定义了函数B,这是我以前所没有见到过的。java中好像并没有这种用法(待确认)。
def A(aaa,bbb,ccc):
def B(ddd,eee,fff):
xxxx
为什么用嵌套函数呢?它有什么优点?能解决什么问题?
- 装饰器传参,就是多层嵌套的函数。 (装饰器是什么?作用是什么?)
- 写闭包的很好用。 (闭包是什么?作用是什么?)
- 函数的作用域小的,嵌套的B函数的作用域仅在A内,其他地方是看不到函数B的。 (作用呢?)
- 写递归方便,且清晰。
据说以上的嵌套函数的写法,ambda 和单独创建一个 function 也可以,有什么区别呢?
https://www.jianshu.com/p/d00108741a18
https://www.cnblogs.com/hackerl/p/5985102.html
https://eli.thegreenplace.net/2012/03/23/python-internals-how-callables-work/
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures
https://blog.csdn.net/marty_fu/article/details/7679297