1
bulshit 2018-04-26 17:47:12 +08:00 via Android 1
因为都是对象
|
2
THP301 2018-04-26 17:52:48 +08:00
看看 Python 的源码就知道了
|
4
vipppppp 2018-04-26 18:13:03 +08:00
#1 正解
万物皆对象 大 py 就是这么神奇 |
5
Hopetree 2018-04-26 18:15:57 +08:00
装饰器?
|
6
whoami9894 2018-04-26 18:16:54 +08:00 via Android
闭包函数的定义
|
7
mec 2018-04-26 18:40:44 +08:00
closure
|
8
Leigg 2018-04-26 18:54:08 +08:00 via Android
js 中的闭包是说用来在外面访问函数内部的变量。python 应该异曲同工之妙,其实写法非常像。
|
9
ltoddy 2018-04-26 20:48:19 +08:00
python 中所有的东西,在底层对应的是 Py_Object 的这个结构体指针,既然你可以返回比如字符串之类,为什么不能返回函数呢,大家都是 Py_Object* 呀。
|
10
lolizeppelin 2018-04-26 23:28:34 +08:00 via Android
这么说吧 如果不能这样 得多麻烦 全部专门定义一个累来返回实例么
|
11
Minys 2018-04-26 23:57:56 +08:00 via iPhone
这种结构叫闭包( encloser ),是函数式编程相关。因为 Python 里啥都是对象,如果用 C 写 Python 拓展就知道(虽然我没写过),不管啥都是 Py_object*,底层来看是一样的,就相当于根据外层函数的参数和运行定制了内层函数(也可以理解成成员变量)并返回。
|
12
feixchow 2018-04-27 01:55:56 +08:00
函数式编程语言特性,函数是第一公民。函数和变量、对象这些都是同等处理的。
|
13
guoli100 2018-04-27 07:02:47 +08:00 via iPhone
Python 有函数式编程特性。函数式编程里,函数是 first class,函数可以作为参数传入,也可以作为返回值返回,这样的函数一般叫高阶函数。如果你了解一下柯里化,就知道把函数作为值返回的作用。
另外可以了解下 Python 中的装饰器,用函数实现的装饰器,非常典型,把要装饰的函数作为参数,返回一个 wrapper 函数,而且它还是个闭包。 |