函数对象

一、函数对象

  简单来说,函数对象其实就是函数名,函数名具体有4中用法

  注意:函数名后面跟括号,表示函数被调用

  用法一

    函数名可以当成变量赋值

def index():
    print('from index')


a = index  # 把函数名index赋值给a
a()        # a +()代表函数自定义函数已被调用
print(a)  # 函数名就是内存地址

 

  用法二

    函数名可以当成函数的参数

def index():
    print('from index')


def func(a):
    a()
    print('from func')


# 把函数名index作为函数func的参数
func(index)  

  用法三

    函数名也可以当成函数的返回值

def index():
    print('from index')


def func():
    print('from func')
    return index  # 函数名index作为函数func的返回值


res = func()
res()

  用法四

    函数名也可以当成容器(可以存放多个元素)类型的元素

def index():
    print('from index')


l = [1, 2, 3, index]
# 函数名index当成列表l的一个元素
print(l)

二、函数的嵌套

  1、函数的嵌套调用

    所谓的函数乔涛调用,简单来说就是函数里面调用其他函数

    应用案例1:

# 1.比较两个数的大小
def my_max(a, b):
    if a > b:
        return a
    return b


# my_max(1, 2)

    应用案例2:

# 2. 比较4个数的大小
def many_max(a, b, c, d):
    # 先两两比较,a,b
    res = my_max(a, b)
    res1 = my_max(res, c)
    res2 = my_max(res1, d)
    return res2

print(many_max(1,2,3,4))

  2、函数的嵌套定义    

    函数的嵌套定义是指在函数里面定义其他函数

    目的在于把复杂的功能隐藏起来,方便操作

函数对象
 1 def all_func(type):
 2     def register():
 3         print('注册')
 4 
 5     def login():
 6         print('登录')
 7 
 8     def transfer():
 9         print('转账')
10 
11     def withdraw():
12         print('提现')
13 
14     if type == 1:
15         register()
16     elif type == 2:
17         login()
18     elif type == 3:
19         transfer()
20     elif type == 4:
21         withdraw()
22     else:
23         print('好好输入')
24 
25 
26 all_func(1)
27 all_func(2)
函数的嵌套定义

 

上一篇:函数对象、函数的嵌套定义及调用和闭包函数


下一篇:python多个装饰器嵌套