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
'''

 

 

把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式。

 

posted @ 2018-06-25 16:11  巨兽~墨菲特  阅读(143)  评论(0)    收藏  举报