1、下面这个对理解函数很重要
def func():
def inner():
print(123)
return inner
# return 返回一个函数(inner),此时我们把一个函数当成一个变量进行返回(这里函数没有加括号,
# 因为加括号()的意思是执行这个函数,我们这只是返回这个函数,让外部能调用func函数内的inner函数 )
a1 = func() # 此时a1就是变量inner,不过还没执行
a1() # 上一行将函数func赋值给一个变量a1,,然后这里执行这个函数,执行函数要加()
# 用函数进行参数赋值并调用
def func():
def inner():
print(123)
print(inner) # 直接打印函数名:<function func.<locals>.inner at 0x038F12F8>
# 表示:函数func里面的局部变量中的inner函数在内存地址的0x038F12F8
return inner
a1 = func()
# 下面这个证明a1和上面定义的inner实际是同一个东西,因为他们内存地址一样
print(a1) #表示:函数func里面的局部变量中的inner函数在内存地址的0x038F12F8
a1() #输出:123
2、函数作为参数进行传递
# 这里演示函数内传递一个变量
def func(an):
print(an)
c = 345
func(c) # 输出:345
# 这里演示一个函数内传递一个函数(要理解传递的这个函数相当于变量)
def func1(an):
print(an) # 没有加括号,就是打印函数的所在位置
def target():
print('target')
func1(target) # 此时输出<function target at 0x03A61538>,表示函数target 在内存地址0x03A61538
# 这里演示一个函数内传递一个函数(要理解传递的这个函数相当于变量)
def func1(an):
an() # 这加括号表示执行这个函数
def target():
print('target')
func1(target) # 此时输出:target
总结:
1.函数可以作为返回值进行返回
2.函数可以作为参数进行互相传递
函数名实际上就是一个变量名,都表示一个内存地址