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

    函数对象指的是:

    函数的内存地址可以像变量值一样去使用

    函数对象的使用

    def func():   #定义一个函数
      print('from func')   #这是功能

    1、函数对象可以被引用

    f=func  #将函数地址放到一个变量中

    print(f)   #打印这个函数的值,得到的是一个函数的内存地址

     f()  #这里变量加上括号,就会得到函数的功能

    PS:想要引用一个函数的功能,必须将这个函数的的内存地址放入一个变量,然后再调用这个变量

    PS:在函数地址放入变量的时候不能加(),如果加了()就是将函数的功能放入变量,而不是内存地址

    2、可以当做参数传给另外一个函数

    def func():
      while True:
        message = input('输入数字')
        if message == '1':
          print('ok')
        else:
          print('no')

    def bar(x):   #这个函数有一个形参X
      print('这里开始调用x,即调用func')   #打印这个形参
      x()    #形参直接当函数调用

    bar(func)   #调用bar函数时候把func函数的内存地址作为实参传入

    PS:func的内存地址传给bar的形参,这个形参就像一个可调用的函数一样被调用,形参x的值就是func的功能

    3、可以当做一个返回值传给另一个函数

    def func():
      message = input('输入数字: ')
      if message == '1':
        return True
      else:
        return False

    def foo():  
      print('这里开始调用功能')
      if func() is True:    #这里判定func函数传回的是什么值
        print('登录成功')
      else:
      print('登录失败')

    res = foo   #这里将函数的内存地址放入一个变量,这样在全局下,其他的函数也可以调用这个函数的功能
    res()   #可以调用foo()函数

    PS:在一个函数内获取另一个函数的返回值,直接写判定语句即可,函数会自动调用函数获得返回值

    4、可以当做容器类型的元素

    l=[func]   #将func的函数内存地址放入列表的某一个位置

      print(l)  #这里打印l获得就是func函数的内存地址

    l[0]()    #调用方式就是列表的位置加()

    dic={'0':func}   #将func的内存地址放入字典的某一个键值对中

      print(dic)  #这里打印这个字典就会获得这个函数的内存地址

    dic['0']()    #通过字典的键去调用这个值得功能

    函数的内存地址分为两大类用途

    1、直接加()调用函数的功能

    2、可以当做变量值一样使用,可以被引用,可以被当做参数值被传入,可以当做返回值,可以当做容器元素使用

    函数对象的应用实例

    def login():
    print('login')

    def register():
    print('register')

    def shoppping():
    print('shopping')

    def pay():
    print('pay')

    def withdraw():
    print("withdraw")

    def transfer():
    print('transfer')

    func_dic={
    '1':login,
    '2':register,
    '3':shoppping,
    '4':pay,
    '5':withdraw,
    '6':transfer
    }

    while True:
    print("""
    0: 退出
    1: 登录
    2: 注册
    3: 购物
    4: 支付
    5: 提现
    6: 转账
    """)
    choice=input('输入操作>>>: ').strip()
    if choice == '0': break
    if choice in func_dic:
    func_dic[choice]()
    else:
    print('输入的指令不存在')

    PS:函数对象的一种应用,把函数内存地址放入容器里,当做容器类型的元素,去调用
  • 相关阅读:
    现在不知道为什么安装pip包总是失败,只能用清华源
    linux 下 svn配置;以及多仓库配置
    谷歌浏览器安装json格式化插件
    RESTful API的理解
    mysql5.6 rpm安装配置
    linux,apache,php,mysql常用的查看版本信息的方法
    mysql允许别人通过ip访问本机mysql数据
    直接取PHP二维数组里面的值
    mysql优化
    self this
  • 原文地址:https://www.cnblogs.com/shizhengquan/p/9977054.html
Copyright © 2011-2022 走看看