函数对象

函数对象

1. 函数对象 

 1 """函数名遇到括号就会调用!!!"""
 2 # 用法1:函数名可以当做变量名赋值
 3 # def index():
 4 #     print('from index')
 5 # a = index
 6 # a()  # 本质就是在调用index函数
 7 
 8 # 用法2:函数名还可以当做函数的实参
 9 # def index():
10 #     print('from index')
11 # def func(a):
12 #     print(a)
13 #     a()
14 #     print('from func')
15 # func(index)
16 
17 # 用法3:函数名还可以当做函数返回值
18 # def index():
19 #     print('from index')
20 # def func():
21 #     print('from func')
22 #     return index
23 # res = func()  # 调用func并接受func的返回值
24 # res()
25 
26 # 用法4:函数名可以当做容器类型(内部可以存放多个数据)的元素
27 # def index():
28 #     print('from index')
29 # l = [111, 222, 333, index()]
30 # print(l)

2. 函数嵌套的定义

 1 # 函数体内部定义其他函数
 2 # 将复杂的功能全部隐藏起来 暴露一个简单的接口
 3 def all_func(type):
 4     def register():
 5         print('注册功能')
 6     def login():
 7         print('登录功能')
 8     def transfer():
 9         print('转账功能')
10     def shopping():
11         print('购物功能')

3. 函数嵌套的调用

 1 # 嵌套调用:函数内部调用其他函数
 2 # def index():
 3 #     print('from index')
 4 # def func():
 5 #     index()
 6 #     print('from func')
 7 # func()
 8 
 9 def my_max(a, b):
10     if a > b:
11         return a
12     return b
13 
14 def many_max(x,y,z,m):
15     res = my_max(x,y)
16     res1 = my_max(res,z)
17     res2 = my_max(res1,m)
18     return res2
19 ret = many_max(1,2,3,4)
20 print(ret)7

4. 闭包函数

 1 闭:定义在函数内部的函数
 2 包:内部函数使用了外部函数名称空间中的名字
 3 # 只有符合上述两个特征的函数才可以称之为"闭包函数"
 4 
 5 # def outer():
 6 #     x = 222
 7 #     def index():
 8 #         print('from index', x)
 9 #     return index
10 
11 # 闭包函数其实是给函数传参的第二种方式
12 # 方式1:函数体代码需要用到数据 直接在括号内定义形参即可
13 # def index(username):
14 #     print(username)
15 # def my_max(a, b):
16 #     if a > b:
17 #         return a
18 #     return b
19 # 方式2:利用闭包函数
20 # def outer(x,y):
21 #     # x = 2
22 #     # y = 40
23 #     def my_max():
24 #         if x > y:
25 #             return x
26 #         return y
27 #     return my_max
28 # res = outer(2,40)
29 # print(res())
30 # print(res())
posted @ 2021-11-16 19:12  XX_Bb  阅读(28)  评论(0编辑  收藏  举报