Skip to content

Latest commit

 

History

History
163 lines (112 loc) · 3.67 KB

File metadata and controls

163 lines (112 loc) · 3.67 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 0222
- 这是 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
  • 在函数中遇到了return
    • 直接就返回了
    • 后面的东西全被短路
    • 什么是短路来着??🤔

图片描述

短路

  • 在有水的时候
    • 电路走的是水滴这条路
    • 灯泡被短路
    • 电池被烧坏

图片描述

  • 这种现象就是短路

在逻辑判断中的短路

图片描述

  • or 左边出现True
  • and 左边出现False
  • 就会将 右边短路

图片描述

  • 当时使用 print函数验证了一下

图片描述

  • 现在可以自己定义函数来验证短路的规律吗?
    • 不要翻页
    • 试着自己定义验证函数

自定义函数

图片描述

  • 函数已经定义好了

图片描述

  • 如何验证呢?

验证and

图片描述

  • and左边 为 False的 时候
    • 右边部分 直接被短路

验证 or

  • or左边为True的时候
    • 右边部分
      • 直接被短路

图片描述

  • 函数中定义的那些局部变量后来怎么样了?

局部变量

图片描述

  • a、b、c不是返回值
  • 在函数返回之后
  • 如何了呢?

调用过程

  • 调用的时候
    • 会把当前调用的的地址压到函数栈中
      • return的时候就回到这里
  • 然后从f函数的开始进行执行
    • 内部的这些a、b、c
    • 都是int型的变量
    • 生命周期就是 函数范围内
    • 会指向相应的小数据池
  • 函数结束后
    • 这些int型变量的引用数减1
    • 程序播放头跳回到调用的位置继续执行
  • 这些是中间过程
  • 不是最终需要的东西

过程变量

  • 随着函数过程的结束
    • 这些中间过程中产生的变量
    • 也就是这些帧上面的变量
    • 也就消失不见

图片描述

  • 相关内存被释放了
  • 调试的时候可以让函数快速返回吗?

尝试调试

图片描述

  • 尝试调试

进入函数

  • 进入sorry函数
    • 输出了一个s

图片描述

  • 这时候如果直接按下r
    • 直接跳出sorry函数

图片描述

  • r在这里是什么意思呢?

r

  • 帮助文档

图片描述

  • r 的意思 就是return
    • 继续执行直到当前函数结束

总结

  • 我们这次了解了函数返回值
    • 函数可以返回字符串
    • 也可以返回整型变量
    • 甚至可以返回NoneType类型的None
      • 啥都不返回
      • 其实最终也返回了个None
    • 函数必须返回
  • 我们能做点好玩的函数么?🤔
  • 我们下次再说👋

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