python之函数对象

1.函数对象

函数对象的实质

函数对象的实质在于,可以把函数当成变量去用
func = 内存地址

def func():
	print('from func')

1.1赋值

函数对象可以赋值

def func():
	print('from func')
f = func
print(f,func)
f()

1.2 传参数

可以把函数当做参数传给另外一个函数

def func():
	print('from func')
def foo(x): # x = func的内存地址
	print(x)

foo(func)

1.3返回值

可以把函数作为另外一个函数的返回值

def foo(x): # x = func的内存地址
	return x # return func的内存地址

res = foo(func)  # foo(func的内存地址)
print(res) # res = func的内存地址
res()

1.3容器类型

可以当做容器类型的一个元素

def func():
    print('from func')
 
 l = [func]
 print(l)
 l[0]()

dic = {'k1':func}
print(dic)
dic['k1']()

1.3.1应用

代码未优化前

def login():
	print('登录功能')
def transfer():
	print('转账功能')
def check_balance():
	print('查询余额')
def withdraw():
	print('取款功能')
def register():
	print('注册')

while True:
	print(
		'''
		0 退出
		1 登录
		2 转账
		3 查询余额
		4 取款功能
		5 注册
		'''
	)
	choice = input('请输入命令编号>>:).strip()
	if not choice.isdigit():
		print('必须输入编号')
		continue
	if choice == '0':
		break
	if choice == '1':
		login()
	elif choice == '2':
		transfer()
	elif choice == '3':
		check_balance()
	elif choice =='4':
		withdraw()
	elif choice == '5':
		register()
	else:
		print('输入的指令不存在')

代码未优化后

def login():
	print('登录功能')
def transfer():
	print('转账功能')
def check_balance():
	print('查询余额')
def withdraw():
	print('取款功能')
def register():
	print('注册')
func_dic = {
	'0':['退出',None],
	'1':['登录',login],
	'2':['转账',transfer],
	'3':['查询余额',check_balanca],
	'4':['取款',withdraw],
	'5':['注册',register]
}
while True:
	for k in func_dic:
		print(k,func_dic[k][0])

	choice= input('请输入命令编号>>:).strip()
	if not choice.isdigit():
		priint('必须输入编号')
		continue
	if choice == '0':
		break
	if choice in func_dic:
		func_dic[choice][1]()
	
	else:
		print('error')
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值