文章目录
- 第三篇 Python核心语法与鸭子类型思想
- 第6章 函数:代码复用的基础与鸭子类型的初体验
- 6.1 什么是函数
- 6.1.1 生活中的类比
- 6.1.2 编程中的定义
- 6.2 函数的基础语法与分类
- 6.2.1 无参函数:固定逻辑的封装
- 6.2.2 带参函数:通用逻辑的载体
- 6.2.3 有返回值的函数:把结果还给你
- 6.2.4 默认值参数:大多数情况用默认值
- 6.2.5 不定长参数:数量不固定也能处理
- (1)`*参数名`:接收任意多个普通参数
- (2)`**参数名`:接收任意多个键值对参数
- 6.2.6 动手练习:计算三门课成绩
- 6.3 变量作用域:变量的有效范围
- 6.3.1 全局变量和局部变量
- 6.4 函数背后的鸭子类型
- 6.4.1 核心思想:参数不挑类型,能用就行
- 6.4.2 更通用的例子:打印长度
- 6.4.3 鸭子类型给函数带来的好处
- 6.5 本章小结
- 第7章 类与对象:面向对象与鸭子类型的核心舞台
- 7.1 万物皆对象:从生活中理解对象
- 7.1.1 身边的对象
- 7.1.2 从对象到类:提取共同特征
- 7.2 类的定义与使用
- 7.2.1 基础语法
- 7.2.2 self是什么?
- 7.2.3 完整示例:人类
- 7.2.4 创建和使用对象
- 7.3 模块:把代码分到不同文件
- 7.3.1 导入模块的两种方式
- 7.3.2 `__name__`特殊属性
- 7.3.3 动手练习:客户积分回馈
- 7.4 鸭子类型:面向对象的灵魂
- 7.4.1 生活中的例子:支付方式
- 7.4.2 代码实现:不用继承也能多态
- 7.4.3 再举一例:动物叫
- 7.4.4 鸭子类型的工程价值
- 7.5 本章小结
- 第8章 文件操作:数据持久化与类文件对象的鸭子约定
- 8.1 文件的基本概念
- 8.1.1 文本文件和二进制文件
- 8.1.2 文件操作的基本流程
- 8.2 文件的打开与关闭
- 8.2.1 基础语法
- 8.2.2 常用打开模式
- 8.2.3 避免打开异常:用异常处理
- 8.3 读文件的三种方式
- 8.3.1 `read()`:读取全部内容
- 8.3.2 `readline()`:读取一行
- 8.3.3 `readlines()`:读取所有行到列表
- 8.3.4 更推荐:for循环逐行读取
- 8.4 写文件的两种方式
- 8.4.1 `write()`:写入一个字符串
- 8.4.2 `writelines()`:写入一个序列
- 8.5 文件指针:控制读写位置
- 8.5.1 `tell()`:查看当前指针位置
- 8.5.2 `seek()`:移动指针位置
- 8.6 其他常用函数
- 8.7 综合案例:学生成绩文件
- 8.8 鸭子类型的延伸:类文件对象
- 8.8.1 什么是类文件对象
- 8.8.2 例子:内存里的文件StringIO
- 8.8.3 工程意义:通用的处理函数
- 8.9 本章小结
- 全篇总结:鸭子类型贯穿始终的Python
第三篇 Python核心语法与鸭子类型思想
很多初学者会问:鸭子类型是不是一个很难的高级知识点?其实不是。从你写下第一行Python代码开始,你就已经在使用鸭子类型了。
Python的灵活、简洁、好用,本质上都源于「鸭子类型」的设计思想:不纠结一个东西「是什么类型」,只关心它「能不能做这件事」。就像判断一只动物是不是鸭子,不用查它的物种标签,只要它走路像鸭子、叫声像鸭子,我们就可以把它当鸭子来用。
本篇我们会沿着「函数 → 类与对象 → 文件操作」的入门路径,先把每一个基础语法学扎实,再带你看懂每一个语法背后的鸭子类型逻辑。你会发现:Python的灵活不是凭空来的,而是一以贯之的设计思想。
第6章 函数:代码复用的基础与鸭子类型的初体验
函数是编程中最基础的「代码封装工具」:把重复使用的逻辑打包起来,起个名字,下次用的时候直接喊名字就行。
这一章我们先从零基础学会函数的所有基础用法,再带你理解:为什么Python的函数不用声明参数类型?这份灵活的背后,就是鸭子类型的第一次登场。
6.1 什么是函数
6.1.1 生活中的类比
你可以把函数想象成一台「自动榨汁机」:
- 你放进去水果(输入数据)
- 机器按固定流程榨汁(执行代码)
- 最后流出果汁(输出结果)