第二十五篇 函数对象
一、对函数的深层次认识
-
1.python中一切皆对象,函数是第一类对象
-
2.由于函数也是对象,所以函数可以被当作数据处理
def f():
pass
# 函数名就可以看作是一种数据类型的变量
print(f)
print(id(f))
print(type(f))
'''
<function f at 0x00000181D80A2BF8>
1657186954232
<class 'function'>
'''
# 函数名加() 就是返回值,所有的属性都根据函数的返回值而定
print(f())
print(id(f()))
print(type(f()))
'''
None
1408672976
<class 'NoneType'>
'''
- 函数对象可以看作就是函数名,当调用它时,必须在它后面加小括号
二、函数对象的四大功能
1.引用
- 类似于变量,函数对象可以当作变量值的引用来处理
def f():
pass
x = f
print(x)
# <function f at 0x0000024E66002BF8>
2.当作参数传给函数
- 既然函数对象类似于变量,那么它也可以当作接收数据的变量名来进行传值
def f():
print('通过x()来实现f函数的调用')
def f2(x):
x()
f2(f)
# 通过x()来实现f函数的调用
3.当作函数的返回值
- 和将函数对象作为参数传值一样,函数对象可以作为函数的返回值
def f(x):
return x
def f2():
print('我是f2')
a = f(f2)
a() # 我是f2
4.当作容器类型的元素
- 也可以将函数对象看作是一个值,因此它可以作为一个元素存储在容器类型中
def f():
print('你好')
lis = [f]
lis[0]() # 你好
三、函数对象的应用
def pay():
print('支付成功')
def withdraw():
print('提现成功')
func_dic = {'0': par, '1': withdraw}
while True:
msg = """
'1': 支付,
'2': 提现,
'3': 退出,
"""
print(msg)
choice = input('选择功能:').strip()
if choice == '3':
break
elif choice in func_dic:
func_dic[choice]()