zoukankan      html  css  js  c++  java
  • 函数对象

    函数对象:指的是函数名指向的内存地址
    1.如下模块
    def func():
    pass
    print(func) ##输出的是其所在的内存地址
    func()
    其中func代表的就是func函数所在的内存地址,

    现在有一个新的需求:----》函数对象的应用


    def func():
        pass
    func()
    
    def func1():
        pass
    func()
    #把函数对象,传入字典中,
    dict1={'1': func,
           '2': func1,
           }
    #若用户选择函数对象对应的key值,则调用该函数。
    choice=input('请输入功能编号:').strip()
    if choice in dict1
        dict1[choice]()
    

      如上程序,利用该特性,优雅的取代多分支的if,作用:减少了数据的冗余,

    choice=input('请输入功能编号:').strip()
    if choice in dict1
        dict1[choice]()
    等价于:
       if  choice=='1':
      func()
     elif  choice='2'
      func1()
    

    说明:

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

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

    函数嵌套:

            嵌套定义:

        在函数内,定义函数

    def func1():
        print("func1")
        
        def func2():
            print("func2")
            ...
    

    嵌套定义的函数调用:

    1、通过函数内部的返回值调用

    func2=func1()
    func2()
    

    2.嵌套定义的同时,将调用写在定义的内部

    def func1():
        print("func1")
    
        def func2():
            print("func2")
        func2()
    
    func1()
    

     https://www.cnblogs.com/kermitjam/p/10722722.html 



  • 相关阅读:
    hdu2191(多重背包)
    hdu3664(递推dp)
    hdu2955(变形01背包)
    hdu1712(分组背包)
    hdu1114(完全背包)
    hdu4004(二分)
    hdu2870(dp求最大子矩阵)
    POJ 1979 Red and Black(水题,递归)
    POJ 1922 Ride to School(贪心+模拟)
    POJ 1182 食物链(种类并查集)
  • 原文地址:https://www.cnblogs.com/evan0925/p/11014128.html
Copyright © 2011-2022 走看看