函数对象

函数对象:指的是函数名指向的内存地址
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 



原文地址:https://www.cnblogs.com/evan0925/p/11014128.html