在线代码运行BanShow Run

Python 语法速查表

Python 语法速查表,按知识点分节整理常用写法,每段示例都能直接复制到上面的编辑器里运行验证。适合初学 Python 时随手查阅,不用装任何环境。

打开 Python 运行器 →

变量与基本类型

Python 不需要声明类型,赋值即创建变量。用 type() 可以看当前类型。

python
name = "小明"          # str   字符串
age = 18               # int   整数
height = 1.72          # float 浮点数
is_student = True      # bool  布尔(注意首字母大写)
nothing = None         # NoneType 空值

print(type(name), type(age), type(height), type(is_student))
print(age + 1, height * 2, name * 2)     # 字符串可以 * 重复,不能和数字相加
print("年龄是 " + str(age))               # 拼接前必须显式转成字符串
print(f"年龄是 {age},明年 {age + 1}")    # f-string,最常用的写法

字符串常用操作

python
s = "  Hello, Python 世界  "
print(s.strip())              # 去掉首尾空格
print(s.lower(), s.upper())
print(s.replace("Python", "World"))
print(s.split(","))           # 按分隔符切成列表
print("-".join(["2026", "10", "04"]))
print(len(s), s.count("o"))
print("Python" in s)          # 是否包含
print(s[2:7], s[-5:])         # 切片:左闭右开,负数从末尾数
print(s.find("Py"))           # 找不到返回 -1
print("3.14", float("3.14"), int("42"))
print(f"{1234567.891:,.2f}")  # 千分位 + 两位小数
print(f"{255:x} {255:b} {255:o}")   # 十六进制 / 二进制 / 八进制

列表 list

python
nums = [5, 2, 9, 1, 7]
nums.append(3)          # 末尾加一个
nums.insert(0, 100)     # 指定位置插入
nums.remove(9)          # 删掉第一个等于 9 的元素
last = nums.pop()       # 弹出末尾
print(nums[0], nums[-1], nums[1:3])
print(len(nums), max(nums), min(nums), sum(nums), sorted(nums))
print(sorted(nums, reverse=True))         # 从大到小
nums.sort()                               # 原地排序,返回 None(常见坑)
print([x * 2 for x in nums])              # 列表推导式
print([x for x in nums if x % 2 == 0])
print(list(range(1, 6)), list(range(0, 10, 2)))
matrix = [[1, 2], [3, 4]]
print(matrix[1][0], [row[0] for row in matrix])

元组、集合、字典

python
point = (3, 4)                # 元组:不可修改,常用于返回多个值
x, y = point                  # 解包
print(x, y)

tags = {"python", "web", "python"}    # 集合:自动去重、无序
print(tags, "web" in tags)
print(tags & {"web", "ai"}, tags | {"db"}, tags - {"web"})

scores = {"语文": 88, "数学": 92}
scores["英语"] = 79            # 新增 / 修改
print(scores.get("物理"))      # 不存在返回 None,不会报错
print(scores.get("物理", 0))   # 不存在返回默认值
print(scores["数学"])          # 不存在会抛 KeyError
del scores["英语"]
for k, v in scores.items():
    print(k, v)
print(list(scores.keys()), list(scores.values()))

条件与循环

python
score = 76
if score >= 90:
    print("优秀")
elif score >= 60:
    print("及格")
else:
    print("不及格")

# Python 用缩进表示代码块,通常是 4 个空格,同一个块必须一致
for i in range(5):            # 0,1,2,3,4
    print(i, end=" ")         # end 控制结尾不换行
print()

for name in ["小明", "小红"]:
    print(name)

for i, name in enumerate(["a", "b", "c"], start=1):
    print(i, name)

for k, v in {"x": 1}.items():
    print(k, v)

n = 3
while n > 0:
    n -= 1                    # 没有 n-- 这种写法
    if n == 1:
        continue              # 跳过本次剩下的代码,直接进入下一轮判断
    print("n =", n)
print("循环结束,n =", n)

# break 跳出整个循环;for / while 后面还能跟 else,只有没被 break 时才执行
for i in range(3):
    if i == 99:
        break
else:
    print("循环正常结束(没触发 break)才会打印这句")

函数

python
def add(a, b):
    return a + b

def greet(name, greeting="你好"):      # 默认参数必须放在后面
    return f"{greeting}, {name}"

def info(*args, **kwargs):             # 任意个位置参数 / 关键字参数
    print(args, kwargs)

def swap(a, b):
    return b, a                        # 返回元组

print(add(1, 2), greet("小明"), greet("小明", "早上好"))
info(1, 2, name="小明", age=18)
print(swap(1, 2))

# lambda:一行的小函数,常配合 sorted / map 使用
people = [{"n": "a", "age": 30}, {"n": "b", "age": 20}]
print(sorted(people, key=lambda p: p["age"]))
print(list(map(lambda x: x * 2, [1, 2, 3])))
print(list(filter(lambda x: x > 1, [1, 2, 3])))

def fib(n):                            # 递归
    return n if n < 2 else fib(n - 1) + fib(n - 2)
print([fib(i) for i in range(10)])

类

python
class Animal:
    species_count = 0                  # 类属性,所有实例共享

    def __init__(self, name):          # 构造方法
        self.name = name               # 实例属性
        Animal.species_count += 1

    def speak(self):                   # 实例方法第一个参数必须是 self
        return f"{self.name} 发出了声音"

    @staticmethod
    def helper():
        return "静态方法不需要 self"

    def __str__(self):                 # print(对象) 时显示的内容
        return f"<Animal {self.name}>"


class Dog(Animal):                     # 继承
    def __init__(self, name, breed):
        super().__init__(name)         # 调用父类构造
        self.breed = breed

    def speak(self):                   # 重写
        return f"{self.name} 汪汪"


d = Dog("旺财", "柴犬")
print(d.speak(), d.name, d.breed)
print(isinstance(d, Dog), isinstance(d, Animal))
print(d)

读取输入

本站用「输入 (stdin)」面板模拟键盘,程序里每调用一次 input() 就按顺序取一行。

python
name = input("请输入你的名字:")     # 括号里是提示语,会打印出来
age = int(input("请输入年龄:"))     # input() 永远返回字符串,要算数必须转换
print(f"{name} 明年 {age + 1} 岁")

# 一次读入多个数(用空格分隔)
a, b = map(int, input("两个数:").split())
print(a + b)

# 读到文件末尾(stdin 用尽)时会抛 EOFError,可以用 try 兜住
try:
    line = input()
except EOFError:
    print("没有更多输入了")

异常处理

python
def divide(a, b):
    try:
        result = a / b              # 可能出错的代码放这里
    except ZeroDivisionError as e:
        print("捕获到除零:", e)
        result = None
    except TypeError as e:
        print("类型不对:", e)
        result = None
    else:
        print("try 里没有发生异常,才会执行 else")
    finally:
        print("无论有没有异常都执行,常用来关闭文件、释放资源")
    return result

print(divide(10, 2))
print(divide(10, 0))
print(divide(10, "a"))

# 主动抛出与自定义异常
class MyError(Exception):
    pass

def check(age):
    if age < 0:
        raise ValueError("年龄不能是负数")
    return True

try:
    check(-1)
except ValueError as e:
    print("出错了:", e)

常用标准库

python
import math, random, json, datetime, collections, itertools

print(math.sqrt(16), math.floor(3.7), math.ceil(3.2), math.pi)
print(math.factorial(5), math.gcd(12, 18))

random.seed(42)                          # 固定种子,结果可复现
print(random.randint(1, 10), random.choice(["石头", "剪刀", "布"]))
print(random.sample(range(1, 34), 6), random.random())

print(json.dumps({"name": "小明", "age": 18}, ensure_ascii=False))
print(json.loads('{"a": 1}'))

print(datetime.date.today(), datetime.datetime.now().strftime("%Y-%m-%d %H:%M"))

print(collections.Counter("abracadabra").most_common(2))
print(collections.defaultdict(list))
print(list(itertools.permutations([1, 2, 3])))
print(list(itertools.combinations([1, 2, 3], 2)))

# 统计与分数
import statistics, fractions, decimal
print(statistics.mean([1, 2, 3, 4]), statistics.median([1, 2, 3]))
print(fractions.Fraction(1, 3) + fractions.Fraction(1, 6))
print(decimal.Decimal("0.1") + decimal.Decimal("0.2"))   # 精确十进制
print(round(2.675, 2), round(0.1 + 0.2, 2))             # 浮点数的坑

打印与格式化

python
print("a", "b", "c", sep="-", end="!\n")
print(f"{3.14159:.2f}")        # 保留两位小数
print(f"{42:>8}|{42:<8}|{42:^8}|")   # 右对齐 / 左对齐 / 居中,宽度 8
print(f"{0.856:.1%}")          # 百分比
print(f"{1234567:,}")          # 千分位
for i in range(1, 5):
    print("*" * i)             # 文本图形靠字符串重复

换一门语言