首页 > 其他 > 详细

函数对象

时间:2021-01-22 09:55:19      阅读:26      评论:0      收藏:0      [点我收藏+]

函数对象的含义

  含义:指可以把函数当成一个变量使用

  定义函数时,函数名相当存的是一个内存地址

  例如:def func():  # func = 内存地址

      pass

一、函数可以被赋值

  def func():

    print("打印的内容")

  f = func

  f()

二、可以把函数当做参数传给另一个函数

  def func():  # func = 内存地址

    print(“打印的内容”)

  def foo(x):   # x = func的内存地址

    x()  # 调用func的内存地址

  foo(func)  # foo(func的内存地址)

  解释:调用foo函数,等于是把func的内存地址当做实参传给了x,所以x = func的内存地址,然后调用x就是调用func的内存地址

三、可以把函数当做另一个函数的返回值

  def func():

    print("打印的内容")

  def foo(x)  # x = func的内存地址

    return x  # 返回x的值,即return func的内存地址

  res = foo(func)  # res = foo(func的内存地址),把foo当做变量赋值给res

  res()

  解释:res接收的是x的返回值,foo(func)相当于把func的内存地址当做实参传给了形参x,x=func的内存地址,然后返回x的内存地址(即返回func的内存地址)

四、可以把函数当做容器类型的一个元素

  def func():

    print("打印的内容")

  l = [func]  # 数组内的存的是func内存地址

  l[0]()  #   # 取数组中的第0个元素,然后进行调用,即表示调用数组中的第0个元素,第0个元素是func的内存地址

  dic = {“k1”:func}  # 字典中k1所对应的值是func的内存地址

  dic["k1"]()  # 取字典中k1所对应的值

  注意:综上所述可以看出用括号,表示是调用,不加括号,表示把函数当做一个变量进行使用

五、函数对象应用的案例

  需求:模拟ATM机,输入数字几进入相应的页面,例如输入0表示退出,输入1表示进去登陆,输入2表示进入查询余额,输入3表示进入取款功能

  def login():  # 定义函数,表示登陆功能的实现,函数体代码实现的是登陆的功能

    print("登陆")

  def check_balance():

    print("查询余额")

  def withdraw_money():

    print("取款")

  machine_dict= {"0":["退出",None]“1”:[“登陆”,login],"2":[“查询余额”,check_balance,"2":["取款",withdraw_money]}

  while True:

      for i in machine_dict:

     print(i,machine_dict[i][0])  # 打印字典中key的值和value的值

     instructions = input("请输入指令:").strip()

   if instructions == ‘0‘:

     break

   if not instructions.isdigit():

     print("你输入的不是指令,请输入以上指令")

     continue

   if instructions in machine_dict:

     machine_dict[instructions][1]()

   else:

     print("你输入的不是给出的指令")

六、函数的嵌套:就是在调用函数的过程中调用另一个函数

  def func():

    print("打印的内容")

  def foo()

    func()

  foo()

  

 

  

 

函数对象

原文:https://www.cnblogs.com/xialiang37/p/14311260.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!