#精髓:可以把函数当成变量取使用
#func=内存地址
def func():
print('from func')
#1 可以赋值
# f=func #把f当成变量直接赋值给另外一个变量名,那么f 和func指向同一个内存地址
# print(f,func) #输出 <function func at 0x000001F0454671F0> <function func at 0x000001F0454671F0>
# f() #相当于调用 func()
#2 可以当作函数的参数传给另外一个函数
# def foo(x): #x=func的内存地址
# # print(x) #输出 x(即func()的内存地址)
# x() #输出 from func
# # pass
# foo(func) #相当于 foo(func的内存地址)
#3 可以当作另外一个函数的返回值
# def foo(x): #x=func的内存地址
# return x # return func的内存地址
#
# res=foo(func) #foo(func的内存地址)
# print(res) # res=func的内存地址 输出 func的内存地址 <function func at 0x000002791FB971F0>
# res() #输出 from func 内存地址+() 就是返回值
#4 可以当作容器类型的一个元素
# l=[func,]
# # print(l)
#
# l[0]()
# dic={'k1':func}
# print(dic) #输出 {'k1': <function func at 0x000001806A1771F0>}
# dic['k1']() #输出 from func
def login():
print('登录功能')
def transfer():
print('转账功能')
def check_balance():
print('查询余额')
def withdraw():
print('提现功能')
func_dic={
'0':['退出',None],
'1':['登录',login],
'2':['转账',transfer],
'3':['查询余额',check_balance],
'4':['提现',withdraw]
}
# func_dic['1']()
while True:
for k in func_dic:
print(k,func_dic[k][0])
# print('''
# 0 退出
# 1 登录
# 2 转账
# 3 查询余额
# 4 提现
# ''')
choice=input('请输入命令编号:').strip()
if not choice.isdigit(): #判断输入是否是数字
print('请输入数字!')
continue
if choice == '0':
break
# choice='1
if choice in func_dic: #判断choice是否在字典中
func_dic[choice][1]() #在则从字典中取出key
else:
print('输入的指令不存在!')
#
# if choice == '1':
# login()
#
# elif choice == '2':
# transfer()
#
# elif choice == '3':
# check_balance()
#
# else:
# print('输入的指令不存在!')