【前言】

函数名的多种用法 :
    函数名与普通的变量名差不多,都是绑定的一块内存地址!!!
普通的变量名绑定的内存地址存放的是具体的数据值
函数名绑定的内存地址里面存放的不是数据值,而是一些代码!!!
如果想让这些代码执行的话,必须函数名后面加括号,这时候执行的,不单单是找到函数名所绑定的函数体代码所在的内存地址,而且会帮你运行内存地址里面的代码。这也是函数名与普通变量名的区别。

  print(函数名)就能看出来了

 

 。

【函数名的用法】

  1.可以将函数名赋值变量名

  2.可以将函数名当做另一个函数的实参,传给另一个函数的行参,参与到另一个函数体代码的运行中去

 

   3.可以当作函数当作另一个函数的返回值和当作一个容器里的元素

   4.可以当作容器类型的一个元素

(案例一:)

 (案例二:)

 1 def login():
 2     print('登录功能')
 3 
 4 
 5 def transfer():
 6     print('转账功能')
 7 
 8 
 9 def banlance():
10     print('查询余额')
11 
12 
13 def withdrw():  # 增加新功能
14     print('体现')
15 
16 
17 func_dic = {
18     '1': login,
19     '2': transfer,
20     '3': banlance,
21     '4': withdrw
22 }
23 func_dic['1']()  # 登录功能
24 func_dic['2']()  # 转账功能

===================================

优化

 1 def login():
 2     print('登录功能')
 3 
 4 
 5 def transfer():
 6     print('转账功能')
 7 
 8 
 9 def balance():
10     print('查询余额')
11 
12 
13 def withdraw():
14     print('提现功能')
15 
16 
17 func_dic = {
18     '1': login,
19     '2': transfer,
20     '3': balance,
21     '4': withdraw
22 }
23 while True:
24     print(
25         """
26         0:退出
27         1:登录
28         2:转账
29         3:查询余额
30         4:提现
31         """
32     )
33     choice=input('请输入功能编号:').strip()
34     if not choice.isdigit():
35         print('输入错误,请重新输入!')
36         continue
37     if choice=='0':
38         break
39     if choice in func_dic:
40         func_dic[choice]()
41     else:
42         print('编号不存在,请重新输入!')

.

【 函数嵌套】 

  函数嵌套:一个函数调用另一个函数

 .

【闭包函数】 

给函数体代码传参的方式---闭包函数 : 再拿个函数包一下,再把参数传给它,这样就可以实现,传一次参,就可以一直调用了!!!还有个更加有用的地方是可以用在装饰器上!!!

闭包函数的套路是:在原来函数的基础上套了一层函数,先运行套在外面的函数体代码,代码的最后利用return返回里面的函数名称,再用变量名res接收里面的函数名称,最后就可以通过res()来运行被包在里面的函数体代码了!!!!!!
 1 定义在函数内部的函数!!!==================名字的查找顺序以定义阶段为准
 2 并且该内部的函数的函数体代码中,用到了外部函数名称空间中的名字!!!
 3 同时符合这两点,才能叫做闭包函数。
 4 
 5 闭包函数实际应用>>>:是另外一种给函数体代码传参的方式!!!
 6 
 7 1.定义在函数内容
 8 2.用到外部函数名称空间中的名字
 9 
10 
11 
12 def index():
13     name = 'jason'
14     def inner():       # inner就不是闭包函数,因为没有用到外部函数名称空间中的名字
15         print('jason')    # 把'jason'改为name  inner就是闭包函数了

函数传参的两种方式

 1 # 一:直接把函数体需要的参数定义成形参
 2 def f1(x):
 3     print(x)
 4 
 5 
 6 f1(1)
 7 
 8 ================================================================
 9 # 方式二:作用域规则和闭包机制
10 def f2():
11     x = 2
12 
13     def f3():
14         print(x)
15 
16     return f3
17 
18 
19 f = f2()
20 f()

(案例:爬虫)

 

 

posted on 2023-11-19 16:10  认真的六六  阅读(2)  评论(0编辑  收藏  举报