函数的第一类名称和应用
# 函数名在传递的时候可以跟函数定义不在同一级
# 函数名是一个变量, 但它是一个特别的变量, 与括号配合可以执行函数的变量
# 函数名可以查地址
# 函数名的第一类对象的应用方法以下:
# 1.可以当作值,赋值给变量
# 2.可以当作容器中的元素
# 3.可以当作函数的参数
# 4.可以当作函数的返回值
# str,int,list,tuple,dict也能够这样应用
# def cen():
# print("嘿嘿")
# print(cen) #函数名查询的是函数地址
#函数名可以当一个变量赋值给另外一个变量
# def cen():
# print("嘿嘿")
# print(cen)#函数的地址
# a=cen#将函数的地址当一个变量赋给另外一个变量
# a() #相当于调用cen()函数
# 函数名可以当容器类的元素
# def cen1():
# print("嘿嘿")
# def cen2():
# print("嘿嘿")
# def cen3():
# print("嘿嘿")
# def cen4():
# print("嘿嘿")
# ls=[cen1,cen2,cen3,cen4]
# for i in ls:
# i()
# 函数名可以当作函数的参数
# def cen():
# print("吃了吗")
# def cen1(fn):
# print("我是cen1")
# fn()
# print("我是cen1")
# cen1(cen)
# 函数名可以当函数的返回值
# def func_1():
# print("这里是函数1")
# def func_2():
# print("这里是函数2")
# print("这里是函数1")
# return func_2
# fn = func_1()
# # 执行函数1. 函数1返回的是函数2, 这时候fn指向的就是上面函数2
# print (fn() ) # 执行func_2函数
#
# def foo(a):
# def func(a):
# def f1(a):
# print(a)
# return "aelx"
# return f1(a)
# return func(a)
# print(foo(5))
# 成果:
# 5
# aelx
# 先看函数调用,如果括号里有函数先履行括号里的函数,这里的重点是先履行右侧的内容然后履行完再返回来履行剩下的东西。
# 注意:函数是谁调用就将返回值 给他。
# def func(a):
# a()
#
# def foo(b):
# return b()
#
# def f1(c):
# def a():
# def f3():
# print(3333)
# return [f3,a,f1]
# print(11)
# return f3()
# return c(a())
#
# def aa(b):
# print(111)
# return b
# print(f1(aa))
# 成果:
# 11
# 3333
# 111
# [<function f1.<locals>.a.<locals>.f3 at 0x0000014564BF3EA0>,
# <function f1.<locals>.a at 0x0000014564BF3E18>,
# <function f1 at 0x0000014564BF3D90>]
# 再来一个:
# def f1(c):
# def a():
# def f3():
# print(3333)
# return [f3,a,f1]
# print(11)
# return f3()
# return c(a())
#
# def aa(b):
# print(111)
# return b
# print(f1(aa))
# 成果:
# 11
# 3333
# 111
# [<function f1.<locals>.a.<locals>.f3 at 0x000002A1172E3D08>,
# <function f1.<locals>.a at 0x000002A1172E3D90>,
# <function f1 at 0x000002A1172E3BF8>]
# 函数名在传递的时候可以跟函数定义不在同一级
# 函数名是一个变量, 但