在学习高阶函数的过程中,涉及到两条重点内容:
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()再次被执行
转载于:https://blog.51cto.com/13539551/2053914