函数对象的含义
含义:指可以把函数当成一个变量使用
定义函数时,函数名相当存的是一个内存地址
例如:def func(): # func = 内存地址
pass
一、函数可以被赋值
def func():
print("打印的内容")
f = func
f()
二、可以把函数当做参数传给另一个函数
def func(): # func = 内存地址
print(“打印的内容”)
def foo(x): # x = func的内存地址
x() # 调用func的内存地址
foo(func) # foo(func的内存地址)
解释:调用foo函数,等于是把func的内存地址当做实参传给了x,所以x = func的内存地址,然后调用x就是调用func的内存地址
三、可以把函数当做另一个函数的返回值
def func():
print("打印的内容")
def foo(x) # x = func的内存地址
return x # 返回x的值,即return func的内存地址
res = foo(func) # res = foo(func的内存地址),把foo当做变量赋值给res
res()
解释:res接收的是x的返回值,foo(func)相当于把func的内存地址当做实参传给了形参x,x=func的内存地址,然后返回x的内存地址(即返回func的内存地址)
四、可以把函数当做容器类型的一个元素
def func():
print("打印的内容")
l = [func] # 数组内的存的是func内存地址
l[0]() # # 取数组中的第0个元素,然后进行调用,即表示调用数组中的第0个元素,第0个元素是func的内存地址
dic = {“k1”:func} # 字典中k1所对应的值是func的内存地址
dic["k1"]() # 取字典中k1所对应的值
注意:综上所述可以看出用括号,表示是调用,不加括号,表示把函数当做一个变量进行使用
五、函数对象应用的案例
需求:模拟ATM机,输入数字几进入相应的页面,例如输入0表示退出,输入1表示进去登陆,输入2表示进入查询余额,输入3表示进入取款功能
def login(): # 定义函数,表示登陆功能的实现,函数体代码实现的是登陆的功能
print("登陆")
def check_balance():
print("查询余额")
def withdraw_money():
print("取款")
machine_dict= {"0":["退出",None]“1”:[“登陆”,login],"2":[“查询余额”,check_balance,"2":["取款",withdraw_money]}
while True:
for i in machine_dict:
print(i,machine_dict[i][0]) # 打印字典中key的值和value的值
instructions = input("请输入指令:").strip()
if instructions == ‘0‘:
break
if not instructions.isdigit():
print("你输入的不是指令,请输入以上指令")
continue
if instructions in machine_dict:
machine_dict[instructions][1]()
else:
print("你输入的不是给出的指令")
六、函数的嵌套:就是在调用函数的过程中调用另一个函数
def func():
print("打印的内容")
def foo()
func()
foo()
原文:https://www.cnblogs.com/xialiang37/p/14311260.html