day16_01函数对象


#精髓:可以把函数当成变量取使用

#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('输入的指令不存在!')

上一篇:85人教版高中英语第一册第十七课 THE STORY OF WILLIAM TELL


下一篇:Day16_Linux与nginx