函数对象

1. 函数是一类对象

## 1. 函数名可以被引用
def index():
    print('the test01')
a = index   #函数名可以被引用
print(a)
print(id(index))
a()

## 2.函数名可以当参数传递
def foo(x,y,func):
    print(x,y)
    func()
def bar():
    print('123')
foo(1,2,bar)    # 函数名当成参数来传递

## 3.函数名可以当返回值使用
## 传参的时候没有特殊需求,一定不要加括号,加括号当场执行了
def index():
    print("from index")
def func(a):
    return a
a = func(index) #函数名可以当返回值使用
print(a)
a()

## 4.函数名可以被当作容器类型的元素
def func():
    print('from func')

l1 = [1, '2', func, func()]  #函数可以被当作类型的元素 func() 一旦被读到就会立马执行

f = l1[2]
print(f)

2. 实例:

def register():
    print('register')

def login():
    print('login')

def shopping():
    print('shopping')

def pay():
    print('pay')
#使用函数名
func_dic = {
    '1': register,
    '2': login,
    '3': shopping,
    '4': pay
}

def main():
    while True:
        print("""
            1、注册
            2、登录
            3、购物
            4、付款
            5、退出
        """)
        choice = input("请输入对应的编号:").strip()
        if choice == '5':
            break
        if choice not in func_dic:
            continue
        else:
            func_dic[choice]()
main()
原文地址:https://www.cnblogs.com/bigbox/p/11837498.html