Skip to content

Python 基础语法与代码组织

这一页只记 Python 开发里最常用、最容易影响项目理解的语法点。目标不是背完整语法手册,而是能看懂脚本怎么运行,知道数据怎么流动,遇到常见报错能快速定位。

缩进

Python 用缩进表示代码层级,常用 4 个空格。同一层级必须一致,冒号 : 后面通常要跟缩进块。

注释

# 写单行注释;文档字符串 """...""" 用来说明模块、函数或类,可被 help() 读取。

变量命名

变量不用提前声明类型,赋值时绑定对象。命名推荐 snake_case,不要用关键字。

类型转换

input() 得到的一定是字符串,需要数字时要用 int()float() 显式转换。

x = 5
if x > 0:
print("正数")
print("仍在 if 块中")
print("离开 if 块")

最常见的基础类型:

类型 含义 示例
int 整数 18
float 浮点数 1.75
str 字符串 "hello"
bool 布尔值 True / False
None 空值 None
类型 常用写法 记忆点
算术 + - * / // % ** / 得到浮点;// 整除;% 取余;**
比较 == != > < >= <= Python 支持链式比较:80 <= score < 90
逻辑 and or not 支持短路求值:a or "默认值"
成员 in / not in 判断元素是否存在
身份 is / is not 判断是否同一个对象,常用于 None
score = 88
print(80 <= score < 90)
x = None
if x is None:
print("x 为空")

控制流:让代码按条件和次数执行

Section titled “控制流:让代码按条件和次数执行”
score = 88
if score >= 90:
print("优秀")
elif 80 <= score < 90:
print("良好")
elif 60 <= score < 80:
print("及格")
else:
print("不及格")

elif 必须跟在 if 后面,else 可选。

循环控制:

关键字 作用
break 立刻终止整个循环
continue 跳过本轮,进入下一轮
pass 占位,语法需要但暂时不写逻辑

推导式:简单转换可以一行写完

Section titled “推导式:简单转换可以一行写完”

推导式适合用一行生成新数据结构。转换或过滤逻辑很简单时用它;逻辑一复杂,就改回普通循环,代码更容易读。

squares = [i * i for i in range(1, 6)]
evens = [i for i in range(1, 11) if i % 2 == 0]
square_map = {i: i * i for i in range(1, 4)}
even_set = {i for i in range(10) if i % 2 == 0}
结构 特点 常用场景
str 字符串,不可变 文本处理、接口字段、提示词
list 有序、可变 存一组数据,最常用容器
tuple 有序、不可变 坐标、固定配置、可作为字典 key
dict 键值对映射 JSON、接口数据、对象属性
set 无序、去重 去重、交集、并集、差集
raw = " a,b,c "
parts = raw.strip().split(",")
print("-".join(parts))
print("hello".replace("l", "L"))

字符串不可变,replace() 会返回新字符串,不会修改原字符串。

函数、模块与包:把代码组织起来

Section titled “函数、模块与包:把代码组织起来”

函数

函数用来封装可复用代码。常见参数顺序是:位置参数 → 默认参数 → *args**kwargs

模块

一个 .py 文件就是一个模块。常见导入方式:import mathimport math as mfrom math import sqrt

包是组织多个模块的目录,通常包含 __init__.py,适合管理中大型项目代码。

def add(a, b=0):
"""返回 a+b"""
return a + b
def main():
print(add(1, 2))
if __name__ == "__main__":
main()

if __name__ == "__main__" 的作用:只有文件被直接运行时才执行入口;被别的文件 import 时不会自动执行,避免导入副作用。

包结构示例:

project/
├─ main.py
└─ mypkg/
├─ __init__.py
├─ calc.py
└─ utils.py

导入和运行建议:

from mypkg.calc import add
Terminal window
python -m mypkg.calc

推荐在项目根目录用 python -m ... 运行模块,这样更不容易遇到导入路径问题。

基础 I/O:输入、输出、读写文件

Section titled “基础 I/O:输入、输出、读写文件”
能力 写法 重点
输出 print("a", "b", sep="-") sep 控制分隔符,end 控制结尾
输入 input("请输入:") 永远返回字符串,需要手动转换
文件读取 with open(..., "r", encoding="utf-8") 推荐 with + encoding
文件写入 with open(..., "w", encoding="utf-8") "w" 覆盖写,"a" 追加写
with open("test.txt", "w", encoding="utf-8") as f:
f.write("第一行\n")
with open("test.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)

异常处理的目的不是把错误藏起来,而是让程序“可控地失败”。输入转换、文件读取、接口调用这类不稳定场景,都应该考虑异常处理。

try:
x = int("12x")
except ValueError as e:
print("转换失败:", e)
else:
print("没有异常才会执行")
finally:
print("无论如何都会执行")

常见异常:

异常 常见原因
ZeroDivisionError 除数为 0
IndexError 列表索引越界
KeyError 字典键不存在
TypeError 类型不匹配
ValueError 值不合法,常见于类型转换
FileNotFoundError 文件不存在

主动抛出异常:

def withdraw(balance, amount):
if amount < 0:
raise ValueError("amount 不能为负数")
if amount > balance:
raise ValueError("余额不足")
return balance - amount
报错 常见原因 处理方式
IndentationError 缩进不一致、冒号后缺代码块、Tab/空格混用 统一 4 空格,显示空白字符
ModuleNotFoundError 运行目录不对、模块名拼错、包结构不对 在项目根目录运行,必要时用 python -m ...
ValueError int("abc") 这类值不合法 输入校验,使用 try/except
IndexError / KeyError 索引越界或键不存在 len()dict.get()key in dict
TypeError 类型不匹配,比如 "1" + 2 做类型转换,检查变量是否为 None