python高级函数-笔记

文章目录

  • 0x01 什么是高阶函数
  • 0x02 一个函数作为另一个函数的参数
  • 0x03 一个函数作为另一个函数的返回值
  • 0x04 函数里面再定义一个函数

上一篇:python函数笔记

本文内容:
python中高阶函数的介绍与使用

0x01 什么是高阶函数

一般的,以下三种情况的函数称为高阶函数.

1.一个函数作为另一个函数的参数
2.一个函数作为另一个函数的返回值
3.函数里面再定义一个函数

0x02 一个函数作为另一个函数的参数

一个函数的函数名和变量类似,函数名代表着这个函数,它可以进行赋值操作。在函数名后面加一对括号表示对这个函数进行调用。e.g.:计算代码执行时间

def cal_time(fn):
	print(fn) # 
    start = time.time()
    fn()
    end = time.time()
    print('代码运行耗时{}秒'.format(end - start))

def add():
    sum = 0
    for i in range(1,100000000):
        sum += i
    print('sum = {}'.format(sum))
print(add)  # 
cal_time(add)
"""
执行过程:

1.调用cal_time函数,并将实参add赋值给形参fn,add是我们定义的函数,它的值是一个地址。
2.赋值后的形参fn == add 此时 fn() == add()
3.在cal_time函数中执行了fn(),相当于执行了 add()
4.函数执行后得到:


sum = 4999999950000000
代码运行耗时5.938243389129639秒
"""


0x03 一个函数作为另一个函数的返回值

# 2.一个函数作为另一个函数的返回值
def foo():
    print('我是foo,我被调用了')
    return 'foo'
def bar():
    print('我是 bar,我被调用了')
    return foo
x = bar()
print('x的值为:',x) # 
bar()() #调用了foo() 此时,x() == bar()()

0x04 函数里面再定义一个函数

# 3.函数里面再定义一个函数
def outer():
    m = 10
    def inner():
        n = 90
        print('我是inner函数')
    print('我是outer函数')
    return inner

# outer()
outer()() #首先执行outer(),然后执行inner()

在python的内置函数中也有一些高阶函数,列如: map/reduce, filter, sorted。
这些函数已经在上一篇中提到过,在此就不再叙述!

你可能感兴趣的:(Python)