第二十五篇 函数对象

第二十五篇 函数对象

一、对函数的深层次认识

  • 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]()
posted @ 2019-05-31 09:36  newking_itman  阅读(111)  评论(0编辑  收藏  举报