1、函数对象
在函数中,函数是第一类对象,函数是第一等公民
函数可以被当成变量去用
1、可以被赋值
2、可以当做参数传给另一个函数
3、可以当作函数的返回值
4、可以当作容器类型的元素
1.1、可以被赋值
def add(x,y):
    return x+y
func=add
print(func(1,2))
# 3
1.2、可以当做参数传给另一个函数
def add(x,y):
    return x+y
func=add
def foo(x,y,func):
    return func(x,y)
print(foo(1,2,func))
# 3
1.3、可以当作函数的返回值
def add(x,y):
    return x+y
def bar():
    return add
func = bar()
print(func(1, 2))
# 3
1.4、可以当作容器类型的元素
def add(x,y):
    return x+y
dic = { 'add':add }
print(dic['add'](1,2))
# 3
2、函数嵌套
2.1、函数的嵌套定义
def money(name,mode=0):
    
    def fun1(name):
        print(name)
        
    def fun2(name):
        print('这是第二个%s'%name)
        
    if mode==0:
        fun1(name)
        
    elif mode==1:
        fun2(name)
        
    else:
        print('错误')
money('你好',0) # 你好
money('你好',1) # 这是第二个你好
money('你好',2) # 错误
2.2、函数的嵌套调用
def max(x,y):      # 求2个数最大值
    
    if x>y:
        return x
    
    else:
        return y
    
def max3(x,y,z):   # 求3个数最大值
    
    res = max(x,y) #调用求2个数最大值函数
    res = max(res,z)
    return res
max1 = max3(10,15,20)
print(max1) # 20