Python怎么定义数字变量:整数与浮点数赋值示例

周叙
周叙
发布时间:2026-11-08| 6人浏览过
原创

详细讲解Python中如何定义数字变量,通过清晰的代码示例演示整数与浮点数的赋值方法、内存引用机制、类型查看与转换规则,以及避免浮点精度和语法陷阱的实用建议。

Python 核心基础与实践
发布分类:编程基础 / Python 教程 适用版本:Python 3.x 及以上 内容类型:实用语法与机制解析
Python怎么定义数字变量:整数与浮点数赋值示例
图 0:Python 数字变量定义与赋值核心机制概览

在 Python 中定义数字变量非常直接:无需提前声明类型,只需指定变量名称、使用等号 = 作为赋值运算符,并在右侧写入具体的数值即可。Python 解释器在运行时会自动执行类型推断——不带小数点的数值会被自动识别为整数(int),带有小数点或科学计数法的数值会被自动识别为浮点数(float)。

一、定义数字变量的基本语法与赋值流程

变量是程序中用来指代数据并参与运算的名称。在许多静态类型语言(如 C 或 Java)中,定义变量必须先写明类型关键字,例如 int count = 10;。但在 Python 中,类型属于内存中的数据对象,变量本身只是贴在对象上的“名称标签”。

1. 变量命名规则

为数字变量起名时,需要遵循 Python 的合法标识符规范:

  • 变量名只能包含字母(大写或小写)、数字以及下划线 _;
  • 变量名的首字符必须是字母或下划线,不能以数字开头(例如 1score 是非法的,而 score1 是合法的);
  • 严格区分大小写,price、Price 和 PRICE 分别代表三个互不相干的独立变量;
  • 不能使用 Python 的内置保留关键字作为变量名(例如 if、def、class、for 等)。

2. 最基础的赋值示例

定义单个数字变量的语法格式为:变量名 = 数值。以下代码演示分别定义一个整数与一个浮点数:

basic_assignment.py
# 定义一个整数变量(记录数量)
item_count = 25

# 定义一个浮点数变量(记录单价)
unit_price = 19.99

# 打印变量的值
print("商品数量:", item_count)
print("商品单价:", unit_price)

# 检验变量所属的类型
print("item_count 的类型是:", type(item_count))
print("unit_price 的类型是:", type(unit_price))
【示例终端运行结果】 商品数量: 25
商品单价: 19.99
item_count 的类型是: <class 'int'>
unit_price 的类型是: <class 'float'>

3. 多变量赋值的两种快捷写法

在实际编码中,如果需要同时对多个变量赋值,Python 提供了简洁的批量赋值语法:

  • 多变量同值赋值(链式赋值):当多个变量初始值完全相同时,可以使用连续等号。例如 x = y = z = 0,这会让三个变量同时指向同一个整型对象 0。
  • 多变量多元赋值(解包赋值):用逗号在一行中同时为多个变量赋予不同的值。例如 width, height, ratio = 1920, 1080, 1.78。等号左侧的变量数量必须与右侧数值的数量严格一致。
Python怎么定义数字变量:整数与浮点数赋值示例
图 1:Python 执行数字变量赋值语句的四个核心阶段

如图 1 所示,当我们写下一行 total_score = 98.5 时,Python 解释器在幕后完成了一整套严谨的流水线作业:先对左侧标识符进行语法规则检查,接着对右侧字面量进行词法解析并确定其为 float 类型,随后在内存堆中实例化出该数据对象,最终在当前命名空间中记录变量名并建立指向该对象的指针引用。

二、整数(int)的赋值方式与特性

整数在 Python 中对应的类型是 int。它可以表示任意大小的正整数、负整数或零。与日常生活中的数学计数完全一致,整数不包含任何小数部分。

1. 常用整数赋值方式

除常规书写正负整数外,Python 还支持通过内置字面量前缀直接赋值二进制、八进制和十六进制整数:

integer_examples.py
# 1. 常规十进制正负整数
positive_num = 120
negative_num = -45
zero_num = 0

# 2. 其它进制的整数赋值(以 0b / 0o / 0x 为前缀)
bin_val = 0b1010       # 二进制,对应十进制的 10
oct_val = 0o755        # 八进制,对应十进制的 493
hex_val = 0x1A         # 十六进制,对应十进制的 26

print("二进制转换十进制:", bin_val)
print("十六进制转换十进制:", hex_val)
【示例终端运行结果】 二进制转换十进制: 10
十六进制转换十进制: 26

2. 大整数与数字下划线分隔符

当数字位数较长时(例如千万、百亿),直接查看连续的一长串数字很容易数错位数。Python 3.6 及更新版本引入了下划线 _ 作为数字字面量分隔符(遵循 PEP 515)。

例如,可以将 1000000000 书写为 1_000_000_000。下划线在解析时会被解释器自动忽略,它仅仅为了提升开发者的代码可读性,其实际存储的数值和性能开销完全相同。

3. Python 整数的“任意精度”优势

在 C 或 Java 中,整型变量通常被限制为 32 位(最大约 21 亿)或 64 位,计算结果一旦超出范围就会发生溢出报错或循环回绕。而 Python 3 中的 int 实现了动态任意精度算法(底层为 PyLongObject),只要物理内存允许,整数可以无限增长,永远不会因为数字过大而溢出。

huge_integer.py
# 即使是极巨大的整数幂运算,Python 也能精准表达
huge_number = 2 ** 100
print("2 的 100 次方取值:")
print(huge_number)
print("类型依然是:", type(huge_number))
【示例终端运行结果】 2 的 100 次方取值:
1267650600228229401496703205376
类型依然是: <class 'int'>

三、浮点数(float)的赋值方式与底层原理

浮点数在 Python 中对应的类型是 float,专门用于表示包含小数部分的实数。只要数值的书写形式中出现了小数点,即便小数点后是 0,Python 也会将其作为浮点数处理。

1. 浮点数的赋值书写方式

定义浮点数主要有以下两种写法:

  • 标准小数形式:例如 pi = 3.14159、discount = 0.85。若整数部分为 0,可以简写为 .85;同理,5. 也等价于 5.0(但建议保留前后的数字以增强代码可读性)。
  • 科学计数法形式:使用字母 e 或 E 表示以 10 为底的指数。例如 1.5e3 代表 \(1.5 imes 10^3 = 1500.0\),2.8e-4 代表 \(2.8 imes 10^-4 = 0.00028\)。通过科学计数法赋值的数字,其类型始终为 float。
Python怎么定义数字变量:整数与浮点数赋值示例
图 2:Python 变量“标签式引用”与堆内存对象存储模型

如图 2 所示,当执行 a = 100 并紧接着执行 b = a 时,Python 并不会在内存中复制一份新的数值 100,而是将变量标签 b 指向已经存在的同一个整数对象,该对象的引用计数随之增加;当执行 rate = 3.14 时,解释器单独分配一个类型为 float 的对象实体。这种内存模型保证了数值传递与引用的高效率。

2. 浮点数在底层的存储精度与特性

Python 的 float 在底层采用 C 语言的 double 实现,严格遵循 IEEE 754 双精度(64位)浮点数标准。其中 1 位符号位,11 位指数位,52 位尾数(有效数字位)。

由于计算机内部全部采用二进制存储,而某些十进制小数(例如 0.1 或 0.2)转换成二进制后是无限循环小数,因此在 53 位精度截断后会产生极微小的舍入差异:

float_precision_check.py
a = 0.1
b = 0.2
result = a + b

print("0.1 + 0.2 的计算结果:", result)
print("直接判断 a + b == 0.3 的结果:", result == 0.3)
【示例终端运行结果】 0.1 + 0.2 的计算结果: 0.30000000000000004
直接判断 a + b == 0.3 的结果: False
重要注意事项:在工程开发中,请切记不要直接使用双等号 == 比较两个浮点数是否相等。建议使用标准库 math.isclose(a, b) 进行容差比较;若是货币、金融结算等对精度有绝对要求的场景,应当使用标准库模块 decimal.Decimal 代替浮点数赋值。

四、整数与浮点数的类型转换与运算规则

在实际编写逻辑时,整数与浮点数往往需要协同运算,或者需要在两者之间进行类型强制转换。

1. 强制类型转换函数

Python 提供了 int() 和 float() 两个内置函数来实现数值类型间的相互显式转换:

  • int(x):将浮点数转换为整数。转换过程是直接截断小数部分(向零取整),不会进行四舍五入。例如 int(3.99) 的结果是 3,int(-2.8) 的结果是 -2。
  • float(x):将整数转换为浮点数。数值保持不变,并在末尾追加 .0。例如 float(8) 的结果是 8.0。

2. 混合运算与类型自动提升

当整数与浮点数共同参与算术运算(如加、减、乘)时,Python 会自动将整数隐式提升(Coercion)为浮点数,再进行运算,最终输出的结果必定是 float。

Python怎么定义数字变量:整数与浮点数赋值示例
图 3:整数 (int) 与浮点数 (float) 的核心特性及除法规则横向对照

3. Python 中除法操作的特殊机制

除法是区分整数与浮点数行为的最典型场景。Python 区分了两种除法运算符:

运算符 运算名称 表达式示例 结果与返回类型 规则说明
/ 真除法 (True Division) 8 / 2 4.0 (float) 无论两个操作数是否能整除,结果一律返回浮点数
// 整除 / 地板除 (Floor Division) 7 // 2 3 (int) 只保留商的整数部分,向下取整(朝负无穷方向舍入)
// 整除(含浮点数参与) 7.5 // 2 3.0 (float) 只要操作数有浮点,结果保持地板除但形式提升为浮点
% 取模 / 余数 (Modulo) 7 % 2 1 (int) 计算除法后的余数,满足 a == (a // b) * b + (a % b)

五、定义数字变量时的常见误区与避坑自查

初学者在定义数字变量时,常因语法细节疏忽而导致程序行为异常。以下归纳了最常见的三类错误及正确的排查方法:

Python怎么定义数字变量:整数与浮点数赋值示例
图 4:Python 数字变量赋值过程中的常见误区排查与自查清单

误区一:习惯性给数字加上引号

在 Python 中,被单引号 '...' 或双引号 "..." 包裹的任何内容都会被识别为文本字符串(str),而不是数字。

例如写出 score = "90" 时,score 是字符串;此时执行 score + 10 会直接抛出 TypeError: can only concatenate str (not "int") to str。 正确解法:数字变量两端绝对不要加引号;如果是从输入或网络请求中拿到的数字文本,必须先显式调用 int("90") 或 float("90.5") 转为数值后再进行计算。

误区二:在千位数字中使用英文逗号

许多人在书写大数字时习惯像英语数字那样加上逗号分隔,例如 target_revenue = 1,000,000。在 Python 中,逗号不是数字分隔符,而是元组(tuple)的构造运算符。

这行代码会导致 target_revenue 实际被赋值为一个三元组 (1, 0, 0),后续的数学运算都会崩溃。 正确解法:若要增加千分位可读性,务必使用下划线 target_revenue = 1_000_000。

误区三:浮点数格式化输出与展示混淆

有时为了展示美观需要保留两位小数,部分初学者会误以为定义变量时就要“截断”小数位。实际上,变量在内存中应始终保持完整精度,只在最终向用户展示或输出文本时才进行格式化:

format_float.py
raw_rate = 0.125678

# 变量在内存中完整保留精度,运算不丢失有效信息
computed_val = raw_rate * 1000

# 仅在打印输出时格式化为两位小数
print(f"展示费率: {raw_rate:.2%}")
print(f"保留两位小数数值: {raw_rate:.2f}")
【示例终端运行结果】 展示费率: 12.57%
保留两位小数数值: 0.13

总结

在 Python 中定义数字变量的核心原则可以归结为:“直接赋值,自动推断”。整数(int)天然具备任意精度,适合计数、索引及精确离散运算;浮点数(float)基于 IEEE 754 双精度标准,适合科学计算与连续实数运算。编写代码时,合理运用下划线提高可读性,区分好 / 真除法与 // 整除,并在需要比较浮点数时规避直接判等,即可高效、稳健地完成各类数值处理任务。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。