Skip to content

Latest commit

 

History

History
183 lines (127 loc) · 4.28 KB

File metadata and controls

183 lines (127 loc) · 4.28 KB
Error in user YAML: (<unknown>): found a tab character that violate indentation while scanning a plain scalar at line 3 column 3
---
- oeasy Python 0223
- 这是 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` 
---

形式(formal)参数(parameter)列表(list)

回忆

  • 上次了解了函数返回值
  • 函数可以返回字符串
  • 也可以返回整型变量
  • 甚至可以返回NoneType类型的None
  • 啥都不返回
  • 其实最终也返回了个None
  • 函数必须返回
  • 我们能做点好玩的函数么?
  • 先看看系统中的各种函数

最大值max

图片描述

  • max函数
  • 接收2个整型参数
  • 返回一个整型返回值
  • 这个函数的源文件在哪里呢?

builtins

  • 查看帮助

图片描述

  • 通过帮助找到特征

图片描述

  • 通过特征定位函数定义

继续查找

图片描述

  • 这个函数调用了max_min

图片描述

  • 最大最小值函数看起来完全相反
  • 实现起来确实完全相通的
  • 我们不重写这个max了
  • 看看builtins中是否有add函数

定义函数

  • 定义一个add函数
    • add函数可以接受两个参数作为输入
    • 然后有一个返回值作为输出

图片描述

  • 输入输出的概念来自于电路
    • input 输入
    • out 输出

电路

  • 这个函数就像一个硬件合成效果器
    • 把两路输入
    • 混成一路输出

图片描述

  • 不过这个盒子对外是个黑箱
    • 两路怎么分配比例
    • 具体还加什么均衡、滤波处理
    • 是这个黑子内部的功能(function)

函数定义(definition)

图片描述

  • 然后观察add的特性
  • 以及调用add时add(2, 3)的特性

具体实现

图片描述

  • 确实可以实现
  • 这个add函数
    • 接收有两个参数
    • 返回一个返回值
  • 我们再明确一些概念

函数头

图片描述

  • 函数头分成两部分
    • 函数名
    • 形参列表
    • 这是一个函数的身份证号
  • 紧跟着函数头的是冒号
  • 下面跟函数具体定义

函数定义

图片描述

  • 函数体里面包括函数的逻辑和运算
  • 以及具体返回些什么
  • 函数就是这样定义好了
  • 定义好了之后
    • 可以被调用(call)

函数调用

图片描述

  • 可以调试一下么?

执行过程

图片描述

  • 声明了两个变量a,b
  • 并且在内存中分配了相应的空间
  • 准备开始函数调用

参数赋值

  • 调用的时候完成了一个参数赋值的过程
    • 把主程序的全局(global)变量a
    • 赋给函数内的局部(local)变量x
    • 同样的事情

图片描述

  • 也发生在将b赋给y的过程中

图片描述

  • 还可以看一下函数堆栈情况

图片描述

  • 然后就是返回的过程

返回

图片描述

  • 函数完成加法计算后

  • 得到一个新的int型变量的地址

  • 作为函数的返回值

  • print函数中调用add(a, b)得到结果

  • 把最终的int型变量的地址(尾号7024)给到print函数

  • print函数打印出这个地址上数字的数值(3000)

  • 主程序返回

  • 我们去总结一下

总结

  • 我们这次完成了
    • 多参数的函数
    • 多个参数形成一个参数列表
    • 调用时
      • 这些参数会依次序进行参数赋值
      • 进行相加操作
      • 把最终的和作为函数的返回值给到print
      • print完成调用过程
  • 函数可以嵌套吗?🤔
  • 我们下次再说👋

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