01_函数对象

函数对象最重要一点:就是把函数当做变量使用

import time
# 需求:有登录功能、转账功能、查询余额、提现功能、注册功能
# 这些功能打印给客户看,用户根据输入不同的标签然后进行选择

# # 1:先写功能模块
def quit():
print('退出中....')

def register():
print('注册功能')

def login():
print('登录功能')

def transfer():
print('转账功能')

def withdraw():
print('提现功能')

# 2 这些功能打印给客户看
tags = 1
while tags:
print("""
0【退出】
1【注册】
2【登录】
3【转账】
4【提现】
""")
# 3 根据用户选择,我们进行实现对应的功能
user_put = input('请选择你要执行的操作.....').strip() # 过滤掉空格
if user_put == '0':
quit()
tags = 0
elif user_put == '1':
register()
elif user_put == '2':
login()
elif user_put == '3':
transfer()
elif user_put == '4':
withdraw()
else:
print('请选择正确的操作')
else:
print('程序已退出......')

# 优化版本:
# 1:优化打印: 这里就是把函数的地址作为变量传入,所以
# 我们字典里面就有函数的地址,调用该函数只需要在地址后面
# 加个()即可。 函数地址() == 函数()

func_dic = {"0": ("【退出】", quit),
"1": ("【注册】", register),
"2": ("【登录】", login),
"3": ("【转账】", transfer),
"4": ("【提现】", withdraw)
}

# 2: 将选项打印到屏幕给用户观看
# 首先dict.items() 得到的结果是迭代器,并且返回值是将键值的形式(k, v)
# 然后用k, v = (k1, v1)解开元祖 k=k1, v=v1

tags = 1
while tags:
for k, v in func_dic.items():
print(k, v[0])

# 3:根据用户的输入实现相对应的功能
user_put = input('请选择你要执行的操作.....').strip() # 过滤掉空格
if user_put in func_dic:
func_dic[user_put][1]()
if user_put == '0':
tags = 0
else:
print('请选择正确的操作')
else:
time.sleep(2)
print('退出成功')

# 重要总结: 这里面用到了一个比较重要的知识点,就是把函数当做变量使用
# def func1()
# 1:如果我们调用阶段像以变量的形式,就写func,就是调用了该函数的地址
# 2:如果我们要调用该功能,就func(),也就是函数地址后加上()就是调用它

# 补充总结:上面功能用到几个小知识点
# 1: a,b = (1,2)
# 2: 字典的items方法,以迭代器的方式打印键值对,返回值是元祖
# 3:for k,v的循环方式就是把上面两个合在一起使用
# 4:字典的拓展使用方式==》 func_dic[user_put][1]()



猜你喜欢

转载自www.cnblogs.com/haibaiwuchang/p/13388663.html