Python 基础合集:从零基础到文件操作

本合集涵盖了我从零开始学习 Python 的完整笔记,内容包括:基础语法、数据类型、流程控制、函数、面向对象、高级特性、文件操作等核心模块。每个部分均可独立阅读,也可以按顺序系统学习。

第1章:初识 Python —— 注释与交互模式

1.1 注释的核心作用

  • 解释代码的功能、逻辑,方便自己与他人理解代码
  • 临时屏蔽调试代码,无需删除
  • 标注代码作者、修改时间、注意事项等

1.2 单行注释

使用 # 开头,仅限当前行,适合简短说明。

# 这是单行注释
print("hello,world")

1.3 多行注释(文档注释)

使用三个引号(单/双均可)实现,适合长段说明。

"""
这是多行注释(用三个双引号)
"""
'''
这也是多行注释
也叫文档注释
'''

1.4 文档字符串(Docstring)

为函数/类写文档,可通过 __doc__help() 查看。

def add(a, b):
    """计算两个数的和。参数 a, b 为数字,返回 a+b 的结果"""
    return a + b

1.5 交互模式

  • 进入:终端输入 pythonpython3
  • 退出exit()Ctrl+Z / Ctrl+D
  • 适用场景:验证基础语法、快速测试、临时计算
  • 不适用场景:复杂项目开发、需保存代码的场景

第2章:程序的“记忆”——变量与常量

2.1 变量的定义与赋值

变量是存储数据的“容器”,值可以随时修改。Python 无需声明类型,直接用 = 赋值。

age = 18
name = "小明"
height = 1.75

2.2 变量命名规则

  • 只能由字母、数字、下划线组成,不能以数字开头
  • 不能使用 Python 关键字(如 ifforprint 等)
  • 严格区分大小写
  • 建议使用“小写字母 + 下划线”命名(如 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 常用关键字

ifelseelifforwhilebreakcontinuedefclassimportreturnTrueFalseNoneandornotinis

第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...
if score >= 90:
    print("优秀")
elif score >= 60:
    print("及格")
else:
    print("不及格")

注意0、空字符串、空列表、空字典、None 转为 False,其余为 True

第7章:程序的“循环”——for 与 while

7.1 for 循环(固定次数遍历)

for name in ['苹果', '香蕉']:
    print(name)
for i in range(1, 6):
    print(i)

7.2 while 循环(条件驱动)

i = 1
while i <= 5:
    print(i)
    i += 1

7.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*2 for i in range(5)]                     # [0,2,4,6,8]

# 字典推导式
data = {i: i*2 for i in range(1,5)}                 # {1:2, 2:4, 3:6, 4:8}

# 集合推导式
data = {i for i in [1,2,2,3]}                      # {1,2,3}(自动去重)

# 生成器表达式
gen = (i for i in range(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 定义与调用

def add(a, b):
    """返回两数之和"""
    return a + b

result = add(1, 2)

13.2 参数类型

  • 位置参数(必须按顺序)
  • 默认参数(def fn(name, age=18)
  • 关键字参数(fn(age=20, name="张三")
  • *args:任意数量位置参数,打包成元组
  • **kwargs:任意数量关键字参数,打包成字典

13.3 匿名函数(lambda)

add = lambda a, b: a + b

第14章:面向对象(上)——类与对象

class Student:
    school = "第一中学"    # 类属性(共享)

    def __init__(self, name, age):
        self.name = name  # 实例属性(独立)
        self.age = age

    def show(self):        # 实例方法
        print(f"{self.name}, {self.age}")

    @classmethod
    def change_school(cls, name):  # 类方法
        cls.school = name

    @staticmethod
    def add(x, y):         # 静态方法
        return x + y

第15章:面向对象(下)——继承与方法重写

15.1 继承

class Dog(Animal):   # Dog 继承 Animal
    pass

15.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 / 0
except ZeroDivisionError:
    print("除数不能为0")
except Exception as e:
    print(f"出错了:{e}")
else:
    print("无异常时执行")
finally:
    print("无论是否异常都执行")

第18章:代码的“组织”——模块与包

18.1 模块导入

import math
from math import sqrt
import math as m

18.2 自定义模块

  • __name__:判断模块是被执行还是被导入
  • __all__:控制 from 模块 import * 的导出内容

18.3 包

一个包含 __init__.py 的文件夹,通过 . 确认层级关系。

18.4 pip 安装

pip install pygame -i https://pypi.tuna.tsinghua.edu.cn/simple/

第19章:数据的“家”——文件操作

19.1 文件写入

with open("test.txt", "w", encoding="utf-8") as f:
    f.write("Hello World")

19.2 文件读取

with open("test.txt", "r", encoding="utf-8") as f:
    print(f.read())       # 读取全部
    print(f.readline())   # 读取一行
    print(f.readlines())  # 每行作为列表元素

19.3 文件打开模式

  • r:读模式
  • w:写模式(覆盖)
  • a:追加模式
  • b:二进制模式
  • +:读写模式

19.4 CSV 文件操作

import csv
with open("data.csv") as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

合集说明

本合集涵盖了 Python 基础的全部核心模块。每个章节都可以独立阅读,也适合作为快速查阅的参考手册。后续将继续更新数据分析(NumPy、Pandas、Matplotlib)和机器学习相关内容。

注:已经使用DeepSeek进行整理精简核心内容,些许不理解的配合个人笔记进行理解。

更多推荐