速查表

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

更新于: · Skillaria.Top

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-stringf"{name}: {price:.2f}"嵌入表达式并设置格式
类型注解count: int = 0给 IDE 和类型检查工具的提示,运行时不检查
空代码块pass语法要求有代码体时的占位符
导入from math import sqrt导入模块或模块中的某个名字

数据类型

类型字面量可变
int42, 1_000_000否
float3.14, 1e-3否
boolTrue, False否
str"文本", '文本', """多行文本"""否
list[1, 2, 3]是
tuple(1, 2), (1,)否
dict{"a": 1}是
set{1, 2},空集合用 set()是
NoneTypeNone—

运算符

类别运算符示例 → 结果
算术+ - * / // % **7 // 2 → 3, 7 % 2 → 1, 2 ** 10 → 1024
比较== != < > <= >=1 < x < 10 — 链式比较
逻辑and or notx or "默认值"
成员in, not in"a" in "abc" → True
身份is, is notx 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]按键取值,键不存在时抛出 KeyErrord["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读写 JSONjson.loads(text), json.dumps(obj, ensure_ascii=False)
csvCSV 表格csv.DictReader(f)
collectionsCounter、defaultdict、dequeCounter("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:从新手到专家》中都有循序渐进的实践讲解。

常见问题

Python 缩进应该用几个空格?

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

列表和元组有什么区别?

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

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

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

sort() 和 sorted() 有什么区别?

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

Python 语句末尾需要加分号吗?

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