一、函数的用法
1. 函数可以做赋值
def func(): print('from func') f=func()
2.函数可以当做参数被调用
3.可以放入列表等当中

1 l=[func,] #作为元素时,函数名不加括号 2 l[0]() #调用
4.案例1:
1)小白写的程序

1 def login(): 2 print('登录功能') 3 def transfer(): 4 print('转账功能') 5 def select(): 6 print('查询余额') 7 while True: 8 print('''' 9 0 退出 10 1 登录 11 2 转账 12 3 查询余额 13 ''') 14 chice=input('请输入命令编号:').strip() 15 if not chice.isdigit(): 16 continue 17 if chice=='0': 18 break 19 elif chice=='1': 20 login() 21 elif chice=='2': 22 transfer() 23 elif chice == '3': 24 select() 25 else: 26 print('输入指令不存在')
2)我进一步优化(程序写死后添加功能不方便,一个功能写一个函数)

1 def login(): 2 print('登录功能') 3 def transfer(): 4 print('转账功能') 5 def select(): 6 print('查询余额') 7 func_dict={ 8 '1':login, 9 '2':transfer, 10 '3':select 11 } 12 while True: 13 print('''' 14 0 退出 15 1 登录 16 2 转账 17 3 查询余额 18 ''') 19 chice=input('请输入命令编号:').strip() 20 # if not chice.isdigit(): 21 # continue 22 # if chice=='0': 23 # break 24 # elif chice=='1': 25 # login() 26 # elif chice=='2': 27 # transfer() 28 # elif chice == '3': 29 # select() 30 # else: 31 # print('输入指令不存在') 32 if chice in func_dict.keys(): 33 func_dict[chice]() 34 else: 35 print('输入指令不存在')
3)高手的优化

1 def login(): 2 print('登录功能') 3 def transfer(): 4 print('转账功能') 5 def select(): 6 print('查询余额') 7 func_dict={ 8 '0':['退出',None], 9 '1':['登录',login], 10 '2':['转账',transfer], 11 '3':['查询余额',select] 12 } 13 while True: 14 # print('''' 15 # 0 退出 16 # 1 登录 17 # 2 转账 18 # 3 查询余额 19 # ''') 20 for k in func_dict: #解放以上print内容 21 print(k,func_dict[k][0]) 22 chice=input('请输入命令编号:').strip() 23 # if not chice.isdigit(): 24 # continue 25 if chice=='0': 26 break 27 # elif chice=='1': 28 # login() 29 # elif chice=='2': 30 # transfer() 31 # elif chice == '3': 32 # select() 33 # else: 34 # print('输入指令不存在') 35 if chice in func_dict.keys(): 36 func_dict[chice][1]() 37 else: 38 print('输入指令不存在')
5.函数的嵌套调用及定义

1 def bijiao(): 2 # 对4个数字比较大小 3 def max2(x,y): 4 if x>y: 5 return x 6 else: 7 return y 8 def max4(a,b,c,d): 9 res1=max2(a,b) 10 res2=max2(res1,c) 11 res3=max2(res2,d) 12 return res3
优点:减少代码量,清晰明了
二、闭包函数
闭包函数=名称空间与作用域+函数嵌套+函数对象 (核心点:名字的查找关系是以函数定义阶段为准)
1.闭包的解释
‘闭’指的是该函数在函数内部;
“包”指的是该函数包含对外层函数作用域名字(外不函数的变量)的引用;
2.定义闭包函数
内部函数可以实现在外部调用。

1 def f1(): 2 x=22222 3 def f2(): 4 print(x) 5 return f2 #不管函数怎么调用,f2调用的永远是f1当中的变量,f2可以在任何地方调用