# Python 速查表：语法、命令和内置函数一览表

URL: https://skillaria.top/zh/guides/python/python-cheat-sheet

Python 语法依靠缩进而不是花括号：冒号后面的代码块缩进 4 个空格。基础包括无需声明类型的变量、if/elif/else 条件、for 和 while 循环、def 函数，以及 print、len、range、input、type 等内置函数和字符串、列表、字典的常用方法。

这份速查表把入门头几个月最常用的内容集中在一页：Python 语法、循环、内置函数，字符串、列表和字典的方法，以及终端命令。每张表都是一份简短的参考，附带可以直接粘贴到 REPL 里运行的示例。

## Python 基础语法

Python 语法最大的特点是用缩进而不是括号来划分代码块。以冒号结尾的行（`if`、`for`、`def`、`class`）之后，下面的代码要缩进 4 个空格。不要混用 Tab 和空格，否则会得到 `IndentationError`。

| 语法结构 | 示例 | 说明 |
| --- | --- | --- |

| 注释 | `# 文本` | # 之后到行尾的内容都会被忽略 |

| 变量 | `age = 25` | 不需要声明类型，类型由值决定 |

| 多重赋值 | `a, b = 1, 2` | 解包；交换两个值：`a, b = b, a` |

| 输出 | `print("你好", name)` | 多个参数之间用空格分隔 |

| 输入 | `s = input("姓名: ")` | 总是返回字符串 |

| f-string | `f"{name}: {price:.2f}"` | 嵌入表达式并设置格式 |

| 类型注解 | `count: int = 0` | 给 IDE 和类型检查工具的提示，运行时不检查 |

| 空代码块 | `pass` | 语法要求有代码体时的占位符 |

| 导入 | `from math import sqrt` | 导入模块或模块中的某个名字 |

### 数据类型

| 类型 | 字面量 | 可变 |
| --- | --- | --- |

| `int` | `42`, `1_000_000` | 否 |

| `float` | `3.14`, `1e-3` | 否 |

| `bool` | `True`, `False` | 否 |

| `str` | `"文本"`, `'文本'`, `"""多行文本"""` | 否 |

| `list` | `[1, 2, 3]` | 是 |

| `tuple` | `(1, 2)`, `(1,)` | 否 |

| `dict` | `{"a": 1}` | 是 |

| `set` | `{1, 2}`，空集合用 `set()` | 是 |

| `NoneType` | `None` | — |

### 运算符

| 类别 | 运算符 | 示例 → 结果 |
| --- | --- | --- |

| 算术 | `+ - * / // % **` | `7 // 2` → 3, `7 % 2` → 1, `2 ** 10` → 1024 |

| 比较 | `== != < > <= >=` | `1 < x < 10` — 链式比较 |

| 逻辑 | `and or not` | `x or "默认值"` |

| 成员 | `in`, `not in` | `"a" in "abc"` → True |

| 身份 | `is`, `is not` | `x is None` |

| 赋值 | `+= -= *= /=`, `:=` | `if (n := len(s)) > 10: ...` |

## 条件语句与模式匹配

```
if score >= 90:
    grade = "A"
elif score >= 70:
    grade = "B"
else:
    grade = "C"

status = "成年人" if age >= 18 else "未成年人"   # 条件表达式（三元运算）

match command:
    case "start":
        print("启动")
    case "stop" | "exit":
        print("停止")
    case _:
        print("未知命令")
```

`False`、`None`、`0`、空字符串和空集合都被视为假，所以通常不写 `if len(items) > 0`，而直接写 `if items`。

## Python 循环语法：for 与 while

### for 循环

Python for 循环的语法是 `for 变量 in 序列:`，后面跟缩进的循环体。它可以遍历任何可迭代对象：字符串、列表、字典、文件、`range`。

```
for i in range(5):              # 0 1 2 3 4
    print(i)

for i in range(10, 0, -2):      # 10 8 6 4 2
    print(i)

for i, fruit in enumerate(["苹果", "梨"], start=1):
    print(i, fruit)

for name, score in zip(names, scores):
    print(name, score)

for key, value in prices.items():
    print(key, value)
```

### while 循环

```
attempts = 3
while attempts > 0:
    password = input("密码: ")
    if password == "secret":
        print("登录成功")
        break
    attempts -= 1
else:
    print("尝试次数已用完")   # 没有执行 break 时才会运行
```

| 命令 | 作用 |
| --- | --- |

| `break` | 提前跳出循环 |

| `continue` | 跳到下一次迭代 |

| 循环的 `else` | 循环没有被 `break` 中断时执行 |

| `range(stop)`, `range(start, stop, step)` | 数字序列，不包含 `stop` |

### 推导式（comprehension）

```
squares = [x ** 2 for x in range(10)]
evens = [x for x in numbers if x % 2 == 0]
lengths = {word: len(word) for word in words}
unique = {c.lower() for c in text}
total = sum(x * x for x in range(100))   # 生成器表达式
```

## 函数

```
def greet(name: str, greeting: str = "你好") -> str:
    """返回问候语。"""
    return f"{greeting}, {name}!"

def total(*args, **kwargs):
    return sum(args), kwargs

square = lambda x: x * x
print(greet("小美"))                  # 你好, 小美!
print(greet("小美", greeting="嗨"))    # 嗨, 小美!
```

| 元素 | 含义 |
| --- | --- |

| `def f(a, b=1)` | 带默认值的参数 |

| `*args` | 任意数量的位置参数（元组） |

| `**kwargs` | 任意数量的关键字参数（字典） |

| `return` | 返回值；没有它函数返回 `None` |

| `lambda x: ...` | 只含一个表达式的简短匿名函数 |

| `global`, `nonlocal` | 修改外层作用域中的变量 |

不要使用可变对象作为默认值，例如 `def f(items=[])`：这个列表只创建一次，会在多次调用之间不断累积。正确写法是 `items=None`，在函数内部写 `if items is None: items = []`。

## Python 内置函数

Python 内置函数无需导入即可使用。下面是几乎每个脚本都会用到的常用函数，包括 `print`、`input`、`map` 和 `zip`。

| 函数 | 作用 | 示例 → 结果 |
| --- | --- | --- |

| `print()` | 输出值 | `print(1, 2, sep="-")` → 1-2 |

| `input()` | 从键盘读取一行字符串 | `int(input())` |

| `len()` | 集合或字符串的长度 | `len("abc")` → 3 |

| `type()` | 对象的类型 | `type(3.0)` → <class 'float'> |

| `isinstance()` | 检查类型 | `isinstance(5, int)` → True |

| `int() float() str() bool()` | 类型转换 | `int("42")` → 42 |

| `list() tuple() set() dict()` | 创建集合类型 | `list("ab")` → ['a', 'b'] |

| `range()` | 数字范围 | `list(range(3))` → [0, 1, 2] |

| `enumerate()` | 生成（索引, 元素）对 | `list(enumerate("ab"))` → [(0, 'a'), (1, 'b')] |

| `zip()` | 把多个序列按位置配对 | `list(zip([1, 2], "ab"))` → [(1, 'a'), (2, 'b')] |

| `sum() min() max()` | 求和、最小值、最大值 | `max([3, 7, 1])` → 7 |

| `abs() round()` | 绝对值和四舍五入 | `round(3.14159, 2)` → 3.14 |

| `sorted()` | 返回排好序的新列表 | `sorted(words, key=len, reverse=True)` |

| `reversed()` | 反向迭代器 | `list(reversed([1, 2]))` → [2, 1] |

| `map() filter()` | 对每个元素应用函数 / 过滤 | `list(map(str, [1, 2]))` → ['1', '2'] |

| `any() all()` | 至少一个为真 / 全部为真 | `all(x > 0 for x in nums)` |

| `open()` | 打开文件 | `open("a.txt", encoding="utf-8")` |

| `help() dir()` | 帮助信息和属性列表 | `help(str.split)`, `dir(list)` |

| `id() hash()` | 对象的标识和哈希值 | `hash("a")` |

最方便的参考手册就在手边——REPL 里的 `help()`：`help(dict)` 会列出字典的所有方法及说明，`dir(obj)` 则给出可用名字的列表。

## 字符串方法

Python 字符串是不可变的：每个方法都返回一个新字符串。切片用法与列表相同：`s[1:4]`，`s[::-1]` 表示反转。

| 方法 | 示例 → 结果 |
| --- | --- |

| `upper() lower()` | `"Py".upper()` → 'PY' |

| `capitalize() title()` | `"hello world".title()` → 'Hello World' |

| `strip() lstrip() rstrip()` | `" hi \n".strip()` → 'hi' |

| `split(sep)` | `"a,b,c".split(",")` → ['a', 'b', 'c'] |

| `join(iterable)` | `"-".join(["a", "b"])` → 'a-b' |

| `replace(old, new)` | `"猫".replace("猫", "狗")` → '狗' |

| `find() index()` | `"hello".find("l")` → 2；找不到返回 -1（`index` 会报错） |

| `count()` | `"banana".count("a")` → 3 |

| `startswith() endswith()` | `"file.py".endswith(".py")` → True |

| `isdigit() isalpha() isspace()` | `"123".isdigit()` → True |

| `removeprefix() removesuffix()` | `"test_a".removeprefix("test_")` → 'a' |

| `zfill() center() ljust()` | `"7".zfill(3)` → '007' |

| `format()` | `"{} + {}".format(1, 2)` → '1 + 2' |

## Python 列表方法

列表是可变的有序集合。大多数方法会原地修改列表并返回 `None`，所以 `a = a.sort()` 是常见错误。

| 操作 | 作用 | 示例 |
| --- | --- | --- |

| `append(x)` | 在末尾添加元素 | `a.append(4)` |

| `extend(iter)` | 添加所有元素 | `a.extend([5, 6])` |

| `insert(i, x)` | 按索引插入 | `a.insert(0, "first")` |

| `remove(x)` | 删除第一个等于该值的元素 | `a.remove(3)` |

| `pop(i)` | 删除并返回元素（默认最后一个） | `last = a.pop()` |

| `clear()` | 清空列表 | `a.clear()` |

| `index(x)` | 第一次出现的索引 | `a.index("b")` |

| `count(x)` | 出现次数 | `a.count(1)` |

| `sort()` | 原地排序 | `a.sort(key=str.lower)` |

| `reverse()` | 原地反转 | `a.reverse()` |

| `copy()` | 浅拷贝 | `b = a.copy()` |

| `del a[i]` | 按索引或切片删除 | `del a[1:3]` |

| 切片 | `a[start:stop:step]` | `a[-1]` 是最后一个，`a[:3]` 是前三个 |

## Python 字典方法

| 操作 | 作用 | 示例 |
| --- | --- | --- |

| `d[key]` | 按键取值，键不存在时抛出 `KeyError` | `d["name"]` |

| `get(key, default)` | 取值或返回默认值 | `d.get("age", 0)` |

| `d[key] = value` | 添加或修改 | `d["city"] = "北京"` |

| `keys() values() items()` | 键、值、键值对 | `for k, v in d.items():` |

| `update()` | 合并另一个字典 | `d.update({"a": 1})` |

| `d1 | d2` | 返回合并后的新字典 | `merged = defaults | user` |

| `pop(key, default)` | 删除并返回值 | `d.pop("tmp", None)` |

| `popitem()` | 删除最后加入的键值对 | `d.popitem()` |

| `setdefault(key, value)` | 返回值；键不存在时先创建 | `d.setdefault("tags", []).append("py")` |

| `key in d` | 检查键是否存在 | `if "name" in d:` |

| `dict.fromkeys()` | 用一组键和同一个值创建字典 | `dict.fromkeys("abc", 0)` |

| `len(d)`, `del d[key]` | 长度和删除 | `del d["old"]` |

### 元组与集合

| 操作 | 示例 → 结果 |
| --- | --- |

| 元组解包 | `x, y = (3, 4)` |

| 向集合添加元素 | `s.add(5)`，删除用 `s.discard(5)` |

| 并集 / 交集 | `{1, 2} | {2, 3}` → {1, 2, 3}; `{1, 2} & {2, 3}` → {2} |

| 差集 | `{1, 2} - {2}` → {1} |

| 列表去重 | `list(dict.fromkeys(items))` — 保持原有顺序 |

## 异常与文件读写

```
try:
    number = int(input("数字: "))
except ValueError as err:
    print("这不是数字:", err)
else:
    print("成功")
finally:
    print("总会执行")

with open("data.txt", "w", encoding="utf-8") as f:
    f.write("一行文本\n")

with open("data.txt", encoding="utf-8") as f:
    for line in f:
        print(line.rstrip())
```

| 异常 | 何时出现 |
| --- | --- |

| `SyntaxError`, `IndentationError` | 语法或缩进错误 |

| `NameError` | 名字未定义（拼写错误） |

| `TypeError` | 对不合适的类型做运算：`"1" + 1` |

| `ValueError` | 类型正确但值不对：`int("abc")` |

| `IndexError`, `KeyError` | 没有这个索引或键 |

| `FileNotFoundError` | 找不到文件 |

| `ZeroDivisionError` | 除以零 |

## 类

```
from dataclasses import dataclass

class Dog:
    def __init__(self, name: str):
        self.name = name

    def bark(self) -> str:
        return f"{self.name}: 汪！"

@dataclass
class Point:
    x: float
    y: float

print(Dog("旺财").bark())   # 旺财: 汪！
print(Point(1, 2))          # Point(x=1, y=2)
```

## Python 常用标准库模块

标准库随解释器一起安装，只要写 `import` 就能使用。

| 模块 | 用途 | 示例 |
| --- | --- | --- |

| `math` | 数学运算 | `math.sqrt(16)` → 4.0 |

| `random` | 随机数 | `random.randint(1, 6)`, `random.choice(items)` |

| `datetime` | 日期和时间 | `datetime.date.today()` |

| `pathlib` | 路径和文件 | `Path("data").glob("*.csv")` |

| `os`, `sys` | 系统、环境变量、命令行参数 | `os.environ.get("HOME")`, `sys.argv` |

| `json` | 读写 JSON | `json.loads(text)`, `json.dumps(obj, ensure_ascii=False)` |

| `csv` | CSV 表格 | `csv.DictReader(f)` |

| `collections` | Counter、defaultdict、deque | `Counter("banana").most_common(1)` → [('a', 3)] |

| `itertools` | 组合与串联迭代器 | `itertools.chain(a, b)` |

| `re` | 正则表达式 | `re.findall(r"\d+", s)` |

| `time` | 暂停与计时 | `time.sleep(1)`, `time.perf_counter()` |

| `asyncio` | 异步代码 | `asyncio.run(main())` |

Python 3.15 引入了惰性导入（PEP 810）：`lazy import pandas as pd` 会把模块的加载推迟到第一次使用时，因此依赖较重的脚本启动明显更快。

## Python 终端常用命令

另一类是启动解释器和安装库的命令。在 Windows 上通常用 `python` 或 `py` 代替 `python3`。

| 命令 | 作用 |
| --- | --- |

| `python3 --version` | 查看版本 |

| `python3` | 打开交互式 REPL（用 `exit()` 退出） |

| `python3 script.py` | 运行文件 |

| `python3 -c "print(2 + 2)"` | 执行一行代码 |

| `python3 -m venv .venv` | 创建虚拟环境 |

| `source .venv/bin/activate` / `.venv\Scripts\activate` | 激活虚拟环境（Linux、macOS / Windows） |

| `python3 -m pip install requests` | 安装包 |

| `pip list`, `pip freeze > requirements.txt` | 列出已安装的包并保存 |

| `pip install -r requirements.txt` | 从文件安装依赖 |

| `python3 -m http.server 8000` | 在当前目录启动简易 Web 服务器 |

| `uv init`, `uv add requests`, `uv run main.py` | 用 uv 管理器创建项目、添加依赖并运行 |

## 新手常见错误

- **用 `=` 做比较** — 条件里要写 `==`，单个 `=` 是赋值。
- **忘写冒号** — `if`、`for`、`def` 后面缺少冒号会报 `SyntaxError`。
- **字符串和数字相加**：`"年龄: " + 25` 会报错，应写成 `f"年龄: {25}"`。
- **遍历时修改列表** — 遍历副本 `for x in a[:]`，或者构建一个新列表。
- **`input()` 返回字符串** — 要做算术运算，先用 `int()` 或 `float()` 转换。

## 总结

Python 语法建立在缩进、冒号和少量语法结构之上：条件语句、for 和 while 循环、函数和类。再加上二十来个内置函数以及字符串、列表和字典的方法，就能应对大部分日常任务。收藏这份速查表，等表格里的内容用熟了，再去学习模块和异步编程；这些内容在课程《Python 3.15：从新手到专家》中都有循序渐进的实践讲解。

## FAQ

**Python 缩进应该用几个空格？**

按照 PEP 8 规范，每一级缩进 4 个空格。关键是整个代码块保持一致，不要和 Tab 混用。

**列表和元组有什么区别？**

列表可变，可以原地添加元素和排序；元组不可变，因此可以作为字典的键，适合存放固定的一组值。

**怎样在 Python 里直接查看对象的所有方法？**

用 dir(obj) 查看名字列表，用 help(obj) 查看说明，例如 help(str) 会显示字符串的全部方法。

**sort() 和 sorted() 有什么区别？**

list.sort() 方法对列表本身排序并返回 None，而 sorted() 函数返回一个新列表，并且适用于任何可迭代对象。

**Python 语句末尾需要加分号吗？**

不需要。分号可以用来在一行里写多条语句，但在常规代码中每条语句单独占一行。


---
Source: Skillaria.Top (https://skillaria.top)
