MIT Python 公开课第四课要点-函数也是一个对象
![头像](http://www.yxskj.cn/wp-content/themes/ceonova-pro/static/images/avatar.png)
在 python 中函数也是一个对象,函数也可以像普通对象一样用一个变量名来引用,作为参数传递给另一个函数,作为返回值从函数中返回变量名引用函数我们定义完函数之后,可以将这个函数赋值给另一个变量deff
():# 这里定义了函数 fprint(function f)g=f# 这里将函数 f 赋值给变量 gg==f# 这个比较将返回 True,因为 f 和 g 都指向同一个函数对象g()# 可以直接这样调用 g,函数将打印 funcyion f
g# 直接在终端输入 g 也是可以的,终端将打印一个函数的描述作为参数传递给另一个函数函数既然是对象,那么就可以像普通对象一样传给另一个函数这有点套娃的意思…def f(): print(这是函数 f) def g(func): # func 是一个对象 print(这在函数 g 中间) func() # 我们预期传入的是一个函数, 因此可以在函数 g 中调用函数 func。
以上代码定义了两个函数 f 和 g,其中 f 是一个普通函数而函数 g,接受一个名为 func 的函数参数,并且在函数 g 内部调用了函数 func假设我们再执行下面代码:g(f)在终端将打印:这在函数 g 中间 这是函数 f。
为什么呢?函数 g 先执行 print 语句,打印出“这在函数 g 中间”,然后执行函数 func, 这里 func 事实上是函数 f, 因为传给函数 g 的参数就是 f,于是打印出了“这是函数 f”作为返回值从函数中返回
函数不单能作为参数传进另一个函数,也能作为返回值,从另一个函数中返回def f(): # 这里定义函数 f print(这是函数 f) def g(): # 这里定义函数 g,函数 g 返回函数 f print(这是函数 g) return f h = g() # 这里直接调用函数 g,将在控制台打印“这是函数 f”,并且将函数 f 赋值给变量 h h == f # 这个比较将返回 True。
函数中不单能返回函数体外定义的函数,还能返回函数体内定义的函数def f(): print(这是函数 f) def g(): # 这里在 f 内部定义了一个函数 g print(这是函数 g) return g # 函数 f 中返回了函数 g h = f() # 这行代码执行后将在控制台打印“这是函数 f” h() # 这行代码将打印“这是函数 g”, 因为这行代码就是调用了函数 g。
以上,如果你看了觉得对你有所帮助,就给 frank 点个赞,分享给身边的朋友们叭,这样 frank 也有更新下去的动力,多谢各位啦~