Python 基础合集:从零基础到文件操作
本合集涵盖了我从零开始学习 Python 的完整笔记,内容包括:基础语法、数据类型、流程控制、函数、面向对象、高级特性、文件操作等核心模块。每个部分均可独立阅读,也可以按顺序系统学习。
第1章:初识 Python —— 注释与交互模式
1.1 注释的核心作用
- 解释代码的功能、逻辑,方便自己与他人理解代码
- 临时屏蔽调试代码,无需删除
- 标注代码作者、修改时间、注意事项等
1.2 单行注释
使用#开头,仅限当前行,适合简短说明。
# 这是单行注释print("hello,world")1.3 多行注释(文档注释)
使用三个引号(单/双均可)实现,适合长段说明。
""" 这是多行注释(用三个双引号) """''' 这也是多行注释 也叫文档注释 '''1.4 文档字符串(Docstring)
为函数/类写文档,可通过__doc__或help()查看。
defadd(a,b):"""计算两个数的和。参数 a, b 为数字,返回 a+b 的结果"""returna+b1.5 交互模式
- 进入:终端输入
python或python3 - 退出:
exit()或Ctrl+Z/Ctrl+D - 适用场景:验证基础语法、快速测试、临时计算
- 不适用场景:复杂项目开发、需保存代码的场景
第2章:程序的“记忆”——变量与常量
2.1 变量的定义与赋值
变量是存储数据的“容器”,值可以随时修改。Python 无需声明类型,直接用=赋值。
age=18name="小明"height=1.752.2 变量命名规则
- 只能由字母、数字、下划线组成,不能以数字开头
- 不能使用 Python 关键字(如
if、for、print等) - 严格区分大小写
- 建议使用“小写字母 + 下划线”命名(如
user_name)
2.3 变量的核心特性
- 动态类型:同一个变量可以存储不同类型的数据
- 引用赋值:变量存储的是数据的“引用”(内存地址),而非数据本身
2.4 常量
Python 没有原生的常量类型,通过“约定俗成”的方式定义:变量名全部大写,用下划线分隔。
MAX_SPEED=120# 约定为常量,不应修改第3章:数据的“身份”——数据类型
3.1 数据类型总览
- 基本数据类型:整数
int、浮点数float、字符串str、布尔值bool - 复合数据类型:列表
list、元组tuple、字典dict、集合set
3.2 基本数据类型
age=18# 整数price=99.9# 浮点数name="小明"# 字符串is_student=True# 布尔值3.3 类型检查与转换
print(type(100))# 检查类型print(int("123"))# 字符串 → 整型print(float("99.9"))# 字符串 → 浮点第4章:程序的“宪法”——标识符与关键字
4.1 标识符命名规则
- 只能以字母、下划线开头,后续可跟字母、数字、下划线
- 严格区分大小写
- 不能使用 Python 关键字
4.2 Python 常用关键字
if、else、elif、for、while、break、continue、def、class、import、return、True、False、None、and、or、not、in、is
第5章:程序的“窗口”——输入与输出
5.1 print() 函数
print("hello")print(1,2,3,sep=",")# 自定义分隔符print("hi",end=" ")# 自定义结尾符,不换行5.2 格式化输出
name="云生"print(f"姓名:{name}")# f-string(推荐)print("姓名:{}".format(name))# format()5.3 input() 函数
name=input("请输入姓名:")age=int(input("请输入年龄:"))# 需要类型转换5.4 多值输入
x,y=map(int,input("输入两个数:").split(","))第6章:程序的“选择”——判断语句
- 单分支:
if 条件: - 双分支:
if...else... - 多分支:
if...elif...else...
ifscore>=90:print("优秀")elifscore>=60:print("及格")else:print("不及格")注意:0、空字符串、空列表、空字典、None转为False,其余为True。
第7章:程序的“循环”——for 与 while
7.1 for 循环(固定次数遍历)
fornamein['苹果','香蕉']:print(name)foriinrange(1,6):print(i)7.2 while 循环(条件驱动)
i=1whilei<=5:print(i)i+=17.3 循环控制
break:立即终止整个循环continue:跳过当前轮,进入下一轮循环pass:占位符,无实际功能
第8章:字符串的“魔法”——操作与方法
8.1 索引与切片
s="Python编程"s[0]# 'P's[-1]# '程's[0:6]# 'Python's[::-1]# '程编nohtyP'(反转字符串)8.2 常用方法
| 方法 | 作用 | 示例 |
|---|---|---|
strip() | 去除首尾空格 | " py ".strip()→"py" |
replace() | 替换子串 | "py".replace("p","P")→"Py" |
split() | 分割成列表 | "a,b".split(",")→["a","b"] |
join() | 连接列表为字符串 | "-".join(["a","b"])→"a-b" |
8.3 转义字符
\n换行、\t制表、r前缀表示原始字符串。
第9章:四大容器——列表、元组、字典、集合
9.1 列表(list)
- 符号:
[],有序、可变、可重复 - 操作:索引切片、
append()、extend()、+组合、*重复、in判断
9.2 元组(tuple)
- 符号:
(),有序、不可变、可重复 - 单元素元组必须加逗号:
(50,)
9.3 字典(dict)
- 符号:
{key:val},键唯一且不可变 - 操作:
dict[key]、get()、遍历keys()/values()/items()
9.4 集合(set)
- 符号:
{},无序、不可重复、自动去重 - 运算:并集
|、交集&、差集-、对称差集^
第10章:一行代码的“魔法”——推导式
# 列表推导式nums=[i*2foriinrange(5)]# [0,2,4,6,8]# 字典推导式data={i:i*2foriinrange(1,5)}# {1:2, 2:4, 3:6, 4:8}# 集合推导式data={iforiin[1,2,2,3]}# {1,2,3}(自动去重)# 生成器表达式gen=(iforiinrange(1000000))# 惰性计算,省内存第11章:数据的“拆解”——拆包
# 基础拆包x,y=(10,20)# * 号收集剩余元素one,*rest=[1,2,3,4]# one=1, rest=[2,3,4]# 字典拆包a,b=data.values()# 函数参数拆包func(*[1,2])# 列表元素作为位置参数传入func(**{'name':'xx','age':18})# 字典键值作为关键字参数传入第12章:数据的“复制”——深浅拷贝
| 操作 | 创建新外层容器 | 嵌套可变对象共享 | 修改嵌套影响原数据 |
|---|---|---|---|
| 直接赋值 | 否 | 完全共享 | 影响 |
| 浅拷贝 | 是 | 共享 | 影响 |
| 深拷贝 | 是 | 不共享 | 不影响 |
- 浅拷贝:只复制外层,内部嵌套可变对象仍共享
- 深拷贝:完全独立,修改任何层级互不影响
第13章:代码的“积木”——函数
13.1 定义与调用
defadd(a,b):"""返回两数之和"""returna+b result=add(1,2)13.2 参数类型
- 位置参数(必须按顺序)
- 默认参数(
def fn(name, age=18)) - 关键字参数(
fn(age=20, name="张三")) *args:任意数量位置参数,打包成元组**kwargs:任意数量关键字参数,打包成字典
13.3 匿名函数(lambda)
add=lambdaa,b:a+b第14章:面向对象(上)——类与对象
classStudent:school="第一中学"# 类属性(共享)def__init__(self,name,age):self.name=name# 实例属性(独立)self.age=agedefshow(self):# 实例方法print(f"{self.name},{self.age}")@classmethoddefchange_school(cls,name):# 类方法cls.school=name@staticmethoddefadd(x,y):# 静态方法returnx+y第15章:面向对象(下)——继承与方法重写
15.1 继承
classDog(Animal):# Dog 继承 Animalpass15.2 方法重写
子类定义与父类同名方法,覆盖父类逻辑。用super()调用父类方法。
15.3 私有属性/方法
__xxx双下划线开头,外部不可直接访问(名称改写机制)。
15.4 专有方法(魔术方法)
__init__、__str__、__add__、__getitem__等,由 Python 自动触发。
第16章:三器一闭——迭代器、生成器、装饰器、闭包
16.1 迭代器
iter()和next()- 实现
__iter__()和__next__()方法
16.2 生成器
- 用
yield关键字,自动实现迭代器协议 - 惰性计算,节省内存
16.3 闭包
- 嵌套函数 + 内层引用外层变量 + 外层返回内层函数
- 核心价值:状态保留、数据封装
16.4 装饰器
- 本质是“函数的函数”,用
@decorator语法糖 - 应用场景:日志记录、性能计时、权限验证
第17章:程序的“保险”——异常处理
try:result=10/0exceptZeroDivisionError:print("除数不能为0")exceptExceptionase:print(f"出错了:{e}")else:print("无异常时执行")finally:print("无论是否异常都执行")第18章:代码的“组织”——模块与包
18.1 模块导入
importmathfrommathimportsqrtimportmathasm18.2 自定义模块
__name__:判断模块是被执行还是被导入__all__:控制from 模块 import *的导出内容
18.3 包
一个包含__init__.py的文件夹,通过.确认层级关系。
18.4 pip 安装
pipinstallpygame-ihttps://pypi.tuna.tsinghua.edu.cn/simple/第19章:数据的“家”——文件操作
19.1 文件写入
withopen("test.txt","w",encoding="utf-8")asf:f.write("Hello World")19.2 文件读取
withopen("test.txt","r",encoding="utf-8")asf:print(f.read())# 读取全部print(f.readline())# 读取一行print(f.readlines())# 每行作为列表元素19.3 文件打开模式
r:读模式w:写模式(覆盖)a:追加模式b:二进制模式+:读写模式
19.4 CSV 文件操作
importcsvwithopen("data.csv")asf:reader=csv.reader(f)forrowinreader:print(row)合集说明
本合集涵盖了 Python 基础的全部核心模块。每个章节都可以独立阅读,也适合作为快速查阅的参考手册。后续将继续更新数据分析(NumPy、Pandas、Matplotlib)和机器学习相关内容。
注:已经使用DeepSeek进行整理精简核心内容,些许不理解的配合个人笔记进行理解。