在学习高阶函数的过程中,涉及到两条重点内容: 1 函数可以作为实参传入另一个函数 这里的函数可以有两种理解, 将a函数名作为参数传入b函数,如果b函数体内有a()语句,则会执行a函数,与a()的结果一致,标志执行一个函数。 将“a()”作为参数,传入b函数,相当于将a函数的返回值传入b函数,如果a函数的返回值为‘a’,则在b函数中遇到a()语句,同样会执行a函数

2 返回值包含函数名 这里的意思就是将a函数的函数名作为参数传到b函数中

因此这里做一下小总结: 1 函数a代表该函数体的内存地址,因此print(a)得到的是内存地址 2 函数a()放在函数结束的地方代表执行该函数,同时a()=该函数的返回值

例子1: def lg(): print('I am nice person') return 'I am blake' print(lg)

执行结果:<function lg at 0x101f21ea0> #打印函数体的内存地址

例子2: def lg(): print('I am nice person') return 'I am blake' lg() 执行结果:I am nice person #执行函数体

例子3: def lg(): print('I am nice person') return 'I am blake' print(lg()) 执行结果: I am nice person I am blake # 首先执行函数体(打印'I amnice person'),然后通过打印‘lg()’的返回值‘I am blake’

例子4: def lg(): print('I am nice person') return lg # 返回函数自己

def mg(func): func() print('I love the world') return 0

mg(lg()) 执行结果: I am nice person # lg()第一次被执行 I am nice person # 在mg()函数体内‘func()’再次被执行 I love the world # 执行mg()中剩下的语句 #在lg这个函数中,lg作为返回值再次传入mg函数中作为参数替换‘func’,并在函数体内,‘func()’中作为lg()再次被执行