Skip to content

Latest commit

 

History

History
93 lines (64 loc) · 2.28 KB

201-548436-实参_arguement_为函数对象.sy.md

File metadata and controls

93 lines (64 loc) · 2.28 KB
show version enable_checker
step
1.0
true

实参(argument)为函数

回忆

  • 上次了解到函数(fun)是一个套路
    • 但是落实到代码上是一个对象
    • 这个fun对象里面有个__code__对象
    • 这就是code object
  • code object里面有这个函数的各种信息
    • 函数名
    • 内部变量数量和元组
    • 字节码
  • 既然函数本质上是一个对象
  • 那么可以把函数作为实参来传递么?

图片描述

转化

图片描述

图片描述

  • 这里的其实相当于

图片描述

再转化

图片描述

图片描述

图片描述

  • 如果是自定义的函数呢?

自定义

图片描述

图片描述

  • 自定义函数也是可以的

汇编理解

  • operate的函数三个参数
    • sum
    • 3
    • 4
  • 调用operate

图片描述

  • 三个形参赋值
    • f = sum
    • a = 3
    • b = 4
  • CALL的FUNCTION是sum
  • 也就是sum(3,4)
  • 然后返回
  • 函数这个对象有什么不同之处呢?

callable

  • 函数式可以调用的

图片描述

  • 一般变量返回False
  • 可调用的函数返回True

图片描述

总结

  • 这次我们研究了函数作为参数
  • 函数本质上是一个函数对象
    • 是一个callable的对象
    • 也有类型、地址
  • 我们把函数作为实参传进去之后
  • 可以函数中完成调用
  • 这某种程度实现了抽象
  • 具体做什么操作是由函数参数决定
  • 我可以访问别的模块的参数么🤔
  • 我们下次再说👋