• 函数对象


    一、函数是第一类对象,即函数可以当作数据传递

    #1 可以被引用
    #2 可以当作参数传递
    #3 返回值可以是函数
    #3 可以当作容器类型的元素

    二、利用该特性,优雅的取代多分支的if

    def foo():
        print('foo')
    
    def bar():
        print('bar')
    
    dic={
        'foo':foo,
        'bar':bar,
    }
    while True:
        choice=input('>>: ').strip()
        if choice in dic:
            dic[choice]()
    

    三、函数是第一个等公民:可以把函数当变量去用

    def func():  # func=函数的内存地址
        print('from func')
    
    x=10 # x=10的内地址
    #1、可以被赋值
    f=func
    f()
    
    #2、可以当作参数传给另外一个函数
    def foo(f):
        print(f)
        f()
    
    foo(func)
    
    # 3、可以当作函数的返回值
    def foo(f):
        return f
    res=foo(func)
    print(res)
    
    # 4、可以当作容器类型的元素
    l=[func,]
    print(l)
    l[0]()
    

    四、

    def login():
        print('登录...')
    
    def register():
        print('注册...')
    
    def tranfer():
        print('转账...')
    
    def withdraw():
        print("提现功能。。。")
    
    func_dic={
        "1":["登录",login],
        "2":["注册",register],
        "3":["转账",tranfer],
        "4":["提现",withdraw]
    }
    
    while True:
        for k,v in func_dic.items():
            print(k,v[0])
        choice = input("请输入您的命令编号,输入0退出:").strip()
        if choice == "0":
            break
        if choice in func_dic:
            func_dic[choice][1]()
        else:
            print("输入的指令错误")
    练习标注
  • 相关阅读:
    ....
    CodeForces 375A(同余)
    POJ 2377 Bad Cowtractors (最小生成树)
    POJ 1258 AgriNet (最小生成树)
    HDU 1016 Prime Ring Problem(全排列)
    HDU 4460 Friend Chains(bfs)
    POJ 2236 Wireless Network(并查集)
    POJ 2100 Graveyard Design(尺取)
    POJ 2110 Mountain Walking(二分/bfs)
    CodeForces 1059B Forgery(模拟)
  • 原文地址:https://www.cnblogs.com/datatool/p/13457917.html
Copyright © 2020-2023  润新知