函数对象

函数对象

函数是第一类对象

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 @   Mr沈  阅读(178)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示

目录