Python基础语法速查表:变量、数据类型与运算符

一只小鹿
一只小鹿
发布时间:2026-10-25 | 5人浏览过
原创

编写 Python 程序的核心基础,在于掌握变量如何存储与传递数据、不同数据类型的特性及其适用边界,以及通过运算符构建精确计算逻辑。本文梳理了日常开发中最高频使用的变量赋值机制、常用内置数据类型、运算符优先级及隐式类型转换规则,并配合内存原理图与流程图,提供一份拿来即用的速查参考。

一、变量定义与引用机制

Python 中的变量不需要显式声明类型。与 C/Java 等静态语言中“变量是固定内存槽”不同,Python 中的变量本质上是一个贴在内存对象上的标签(引用)。执行赋值语句时,解释器先在堆内存中创建具体的数据对象,然后将变量名绑定到该对象的内存地址上。

# 基础赋值:变量名绑定到整数对象
counter = 100

# 多变量多重赋值
x = y = z = 0

# 解包赋值(多元赋值)
width, height, label = 1920, 1080, "MainCanvas"

# 变量重新赋值改变的是引用指向,原对象在无引用时被垃圾回收(GC)
data = 42
data = "hello"  # data 重新指向字符串对象,原整数 42 失去引用
命名约束与推荐规范:
  • 必须以字母或下划线 _ 开头,后续可包含字母、数字和下划线,严格区分大小写。
  • 禁止使用 Python 保留关键字(如 class, def, if, import, pass 等)。
  • 普通变量与函数采用蛇形命名法(user_age),常量推荐全大写(MAX_CONNECTIONS)。
Python基础语法速查表:变量、数据类型与运算符
图 1:变量赋值与内存引用关系——多个变量名可同时引用同一个堆对象

二、核心数据类型及字面量表示

Python 数据类型可从“基础标量类型”与“复合容器类型”进行区分,也可以从其在内存中是否可就地修改划分为可变类型(Mutable)与不可变类型(Immutable)。

1. 数值类型(Number)

  • int(整数):Python 3 整数具有任意精度,不会产生整型溢出错误。支持二进制(0b1010)、八进制(0o77)、十六进制(0xFF)。
  • float(浮点数):双精度 64 位浮点实现,支持科学计数法(1.25e-3)。注意由于二进制表示限制,存在精度舍入特性。
  • bool(布尔值):只有 True 和 False,继承自 int,True == 1 且 False == 0。

2. 序列与集合类型

  • str(字符串,不可变):支持单引号、双引号、三引号多行文本。常用 f"{var}" 格式化。
  • list(列表,可变):有序集合,元素类型可异构,通过下标读取与切片修改,如 [1, "item", 3.14]。
  • tuple(元组,不可变):一旦创建不可增删改其直接元素引用,如 (10, 20)。单元素元组必须加逗号 (1,)。
  • dict(字典,键值对,键不可变,值可变):基于哈希表实现,键必须是可哈希(不可变)对象,检索速度极快,如 {"id": 101, "status": "active"}。
  • set(集合,可变,无序唯一):自动去重,常用于交集、并集和成员检测,如 {1, 2, 3}。
Python基础语法速查表:变量、数据类型与运算符
图 2:Python 核心数据类型分类与内存可变性对比

三、运算符分类与计算规则

Python 提供了丰富的运算符,包含算术、比较、逻辑、赋值、成员和身份六大类。每种运算符在特定数据类型上有重载行为。

分类 常用运算符 关键特性与行为说明
算术运算符 +, -, *, /, //, %, ** / 结果永远是 float;// 为向下取整地板除;** 为幂运算(如 2**3 == 8)。
比较运算符 ==, !=, >, <, >=, <= 比较两者的“值”是否相等。支持链式比较:10 < x < 20 等价于 (10 < x) and (x < 20)。
身份运算符 is, is not 判断两个变量是否引用堆内存中的同一对象(比较 id(a) == id(b)),与 == 值比较截然不同。
逻辑运算符 and, or, not 具备短路求值特性:若左侧已决定表达式真假,则右侧表达式不会被执行,且返回决定结果的操作数本身。
成员运算符 in, not in 判断元素是否存在于序列或集合中。在 set 和 dict 中查找时间复杂度为 O(1),在 list 中为 O(n)。
复合赋值 +=, -=, *=, /= 等 对可变对象(如列表)lst += [1] 会触发原地修改(extend),不可变对象则新建对象重新绑定。

逻辑运算符短路求值逻辑

# and: 遇到第一个假值直接返回该假值;全真则返回最后一个操作数
result_and = "" and "Python"      # 返回 ""(空字符串为假)
result_and_true = 100 and "OK"    # 返回 "OK"

# or: 遇到第一个真值直接返回该真值;全假则返回最后一个操作数
config_host = user_input or "127.0.0.1"  # 用户未输入时采用默认值
Python基础语法速查表:变量、数据类型与运算符
图 3:表达式求值与运算符执行优先级从高到低决策路线

四、高频陷阱与开发避坑指南

虽然 Python 语法精炼,但动态引用和弱约束也带来了一些初学者常踩的隐蔽陷阱。在编写生产代码时,应当重点关注以下几点:

1. is 与 == 的使用边界

== 比较内容相等(调用对象的 __eq__ 方法),而 is 比较身份标识(堆内存物理地址)。在判断单例对象(如 None)时必须使用 is None,而在比对数值或字符串内容时必须使用 ==。

2. 浅拷贝与可变对象共享引用

# 陷阱:列表乘法创建的是多个指向同一子列表的引用
matrix = [[0] * 3] * 3
matrix[0][0] = 1
# 实际结果是每行的第0个元素全部变成了1:[[1, 0, 0], [1, 0, 0], [1, 0, 0]]

# 正确做法:使用列表推导式独立实例化
safe_matrix = [[0] * 3 for _ in range(3)]
safe_matrix[0][0] = 1  # 仅第一行生效

3. 浮点数计算精度舍入

计算机内部使用 IEEE 754 双精度浮点格式,导致部分十进制小数无法精确表示,如 0.1 + 0.2 == 0.3 返回 False。在金融或严格计费场景中,必须使用 decimal.Decimal 模块,或者使用 math.isclose(a, b) 进行浮点公差判定。

Python基础语法速查表:变量、数据类型与运算符
图 4:变量赋值、类型判断与运算场景快速避坑原则

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表