函数对象

函数对象

函数是第一类对象

1、函数名是可以被引用的

def index():
    print("hello world")
a=index
a()

2、函数名可以当做参数传递

def index(a,bar):
    print(a)
    bar()
def fun():
    print("hello world")
index(1,fun)
# >>>
# 1
# hello world

3、函数名可以当做返回值使用

传参的时候没有特殊需求,一定不要加括号,加括号就会到那一步立马执行

def index():
    print("hello world")
def fun(a):
    return a
a = fun(index)
a()
# >>> hello world

4、函数名可以被当做容器类型的元素

def index():
    print("hello world")
l1 = [1,2,index,index()]  # 当有括号的时候执行到l1时就会执行一次函数
f=l1[2]
print(f)  # 打印函数名得到函数内存地址
f()
# >>>
# hello world
# <function index at 0x000002914A70C3A8>
# hello world
# 简单购物车流程
def register():
    print("register")
def login():
    print("login")
def shooping():
    print("shooping")
def pay():
    print("pay")

l1 = {'1':register,'2':login,'3':shooping,'4':pay}
def gw():
    while True:
        print(
            """
            1、注册
            2、登录
            3、购物
            4、结账
            5、退出
            """
        )
        f = input("请输入对应的编号:").strip()
        if f == "5":
            break
        if f not in l1:
            continue
        else:
            l1[f]()
gw()
posted @ 2019-11-11 19:19  Mr沈  阅读(177)  评论(0编辑  收藏  举报