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`
---- 上次了解了函数返回值
- 函数可以返回字符串
- 也可以返回整型变量
- 甚至可以返回NoneType类型的None
- 啥都不返回
- 其实最终也返回了个None
- 函数必须返回
- 我们能做点好玩的函数么?
- 先看看系统中的各种函数
- max函数
- 接收2个整型参数
- 返回一个整型返回值
- 这个函数的源文件在哪里呢?
- 查看帮助
- 通过帮助找到特征
- 通过特征定位函数定义
- 这个函数调用了max_min
- 最大最小值函数看起来完全相反
- 实现起来确实完全相通的
- 我们不重写这个max了
- 看看builtins中是否有add函数
- 定义一个add函数
- add函数可以接受两个参数作为输入
- 然后有一个返回值作为输出
- 输入输出的概念来自于电路
- input 输入
- out 输出
- 这个函数就像一个硬件合成效果器
- 把两路输入
- 混成一路输出
- 不过这个盒子对外是个黑箱
- 两路怎么分配比例
- 具体还加什么均衡、滤波处理
- 是这个黑子内部的功能(function)
- 然后观察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 即可。
















