Skip to content

Latest commit

 

History

History
109 lines (79 loc) · 2.61 KB

File metadata and controls

109 lines (79 loc) · 2.61 KB
Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0212
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
本教程同步发布在: 

     个人网站: `https://oeasy.org` 
     蓝桥云课: `https://www.lanqiao.cn/courses/3584` 
     GitHub: `https://github.com/overmind1980/oeasy-python-tutorial` 
     Gitee: `https://gitee.com/overmind1980/oeasypython` 
---

实参(argument)为函数

回忆

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

图片描述

转化

图片描述

  • 两个参数 次序有讲究
    • 把主要的参数f 放前面
      • 先明确 处理方法
      • 这很 重要
    • 把次要的参数a 放后面
      • 再设置 具体参数
      • 这比起 处理方法 次要一些

图片描述

  • 这里的其实相当于

图片描述

再转化

图片描述

图片描述

图片描述

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

自定义

图片描述

图片描述

  • 自定义函数也是可以的

汇编理解

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

图片描述

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

callable

  • 函数是可以调用的

图片描述

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

图片描述

总结

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

  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。