python入门第十三天__高阶函数
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32 Type "copyright", "credits" or "license()" for more information. >>> import builtins;builtins.abs=10 >>> abs 10 >>> type(abs) <class 'int'> >>>
变量可以指向函数
>>> abs(-20) 20 >>> b=abs >>> b(-23) 23 >>>
把abs指向10后,就无法通过abs(-10)调用该函数了!因为abs这个变量已经不指向求绝对值函数而是指向一个整数10!
当然实际代码绝对不能这么写,这里是为了说明函数名也是变量。要恢复abs函数,请重启Python交互环境。
注:由于abs函数实际上是定义在import builtins模块中的,所以要让修改abs变量的指向在其它模块也生效,要用import builtins; builtins.abs = 10。
传入函数
既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。
def f(n): return n*n def foo(a,b,func): return func(a)+func(b) print(foo(1,2,f))
把函数 f 作为参数传给另一个函数 foo
"D:\Program Files (x86)\python36\python.exe" F:/python从入门到放弃/6.25/高阶函数.py 5 Process finished with exit code 0
函数名可以作为一个返回值
def foo(): def inner(): return 8 return inner() print(foo()) #打印出 8 def foo(): def inner(): return 8 return inner print(foo()()) #打印出 8
输入参数:
def foo(): def inner(name): return name return inner print(foo()('hello')) ''' "D:\Program Files (x86)\python36\python.exe" F:/python从入门到放弃/6.25/高阶函数.py hello Process finished with exit code 0 '''
把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式。

浙公网安备 33010602011771号