函数对象:指的是函数名指向的内存地址
1.如下模块
def func():
pass
print(func) ##输出的是其所在的内存地址
func()
其中func代表的就是func函数所在的内存地址,
现在有一个新的需求:----》函数对象的应用
def func(): pass func() def func1(): pass func() #把函数对象,传入字典中, dict1={'1': func, '2': func1, } #若用户选择函数对象对应的key值,则调用该函数。 choice=input('请输入功能编号:').strip() if choice in dict1 dict1[choice]()
如上程序,利用该特性,优雅的取代多分支的if,作用:减少了数据的冗余,
choice=input('请输入功能编号:').strip() if choice in dict1 dict1[choice]() 等价于: if choice=='1': func() elif choice='2' func1()
说明:
函数是第一类对象,即函数可以当作数据传递
#1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素
函数嵌套:
嵌套定义:
在函数内,定义函数
def func1(): print("func1") def func2(): print("func2") ...
嵌套定义的函数调用:
1、通过函数内部的返回值调用
func2=func1() func2()
2.嵌套定义的同时,将调用写在定义的内部
def func1(): print("func1") def func2(): print("func2") func2() func1()
https://www.cnblogs.com/kermitjam/p/10722722.html