Python3 基本类型运算详解
引言
在 Python 编程语言中,数据类型是构建程序的基础。其中,基本类型主要包括整型(int)、浮点型(float)和布尔型()。它们之间的运算是程序设计中最基础且最核心的部分,熟练掌握这些运算规则对于编写正确的逻辑至关重要。在计算机语言中,运算并不局限于数学中的加减乘除,而是广义的通过运算符连接多个变量来表示某种变量计算的表达式。
本文介绍 Python3 中整型、浮点型和布尔型的基本运算规则。涵盖数学运算、位运算、比较逻辑运算及赋值运算。重点解析整除与幂运算的区别,浮点数精度问题,布尔值转换规则,以及逻辑运算符的正确用法。通过代码示例展示各类运算的实际效果,帮助初学者掌握基础数据类型操作。

在 Python 编程语言中,数据类型是构建程序的基础。其中,基本类型主要包括整型(int)、浮点型(float)和布尔型()。它们之间的运算是程序设计中最基础且最核心的部分,熟练掌握这些运算规则对于编写正确的逻辑至关重要。在计算机语言中,运算并不局限于数学中的加减乘除,而是广义的通过运算符连接多个变量来表示某种变量计算的表达式。
bool在 Python 中,运算符可能连接两个变量,也可能只作用于单个变量。前者称为双元运算符(Binary Operator),后者称为单元运算符(Unary Operator)。同时,运算符可能由不只一个字符构成,注意字符之间不可以有空格,必须紧密相连。但是运算符和连接的变量之间可以有任意多个空格,或者没有空格。为了代码的可读性,建议在双元运算符两侧保留空格,而单元运算符通常紧连变量。
整型(int)用于表示整数。Python 3 中的整型没有固定的位数限制,可以表示任意大小的整数。
Python 支持以下基本的数学运算符:
+:加法运算。-:减法运算。*:乘法运算。/:除法运算。结果总是浮点数。//:地板除(Floor Division)。结果向下取整为整型。**:幂运算。例如 2 ** 3 表示 2 的 3 次方。在 Python 中,整型的除法 / 会得到浮点型结果,即使能整除。例如 4 / 2 的结果是 2.0。而地板除 // 实际上就是除完后再进行下取整,例如 3 // 2 的结果是 1,类型是整型。
需要注意的是,地板除的行为遵循'向负无穷方向取整'的规则。例如:
5 // 2 结果为 2-5 // 2 结果为 -3(因为 -2.5 向下取整是 -3)比较运算符用于判断两数的大小关系,其结果类型永远是布尔型(True 或 False)。
>:严格大于>=:大于等于<:严格小于<=:小于等于==:相等(注意是两个等号)!=:不等特别注意,新手经常犯的错误是比较两个变量相等的运算符是 ==,而不是 =。因为在 Python 中,单等号 = 用作赋值操作,如果误用会导致逻辑错误。
符号 - 既可以作为二元减号,也可以作为一元取负运算符。虽然数学上区别不大,但在语法解析上,一元运算符优先级高于二元运算符。例如 -2 + 3 会被解析为 (-2) + 3。
整型还支持二进制位运算,包括左移 <<、右移 >>、按位与 &、按位或 |、按位异或 ^、按位取反 ~。这类运算在底层开发或算法优化中常用,初学者可先掌握基础算术运算。
# 数学运算
print(2 + 3, 2 - 3, 2 * 3, 2 / 3, 2 // 3, 2 ** 3)
# 输出:5 -1 6 0.6666666666666666 0 8
# 位运算
print(2 >> 3, 2 << 3, 2 & 3, 2 | 3, 2 ^ 3, ~2)
# 输出:0 16 2 3 1 -3
# 比较逻辑
print(2 > 3, 2 >= 3, 2 < 3, 2 <= 3, 2 == 3, 2 != 3)
# 输出:False False True True False True
# 取负
print(-2, -3)
浮点型(float)用于表示实数。其运算规则和整型十分类似,但存在精度问题。
<<, >> 等不能直接用于浮点数)。//。由于计算机使用 IEEE 754 标准存储浮点数,某些十进制小数无法精确表示。因此在进行浮点数计算时,可能会出现微小的误差。
例如:
print(0.1 + 0.2)
# 输出:0.30000000000000004
在实际开发中,如果需要高精度计算,建议使用 decimal 模块。
print(2.1 + 3.2, 2.1 - 3.2, 2.1 * 3.2, 2.1 / 3.2, 2.1 // 3.2, 2.1 ** 3.2)
# 输出:5.300000000000001 -1.1 6.720000000000001 0.65625 0.0 10.74241047739471
print(2.1 > 3.2, 2.1 >= 3.2, 2.1 < 3.2, 2.1 <= 3.2, 2.1 == 3.2, 2.1 != 3.2)
# 输出:False False True True False True
print(-2.1, -3.2)
当整型和浮点型混合运算时,Python 会自动将整型转换为浮点型,然后按照浮点型规则进行运算。这种机制称为隐式类型转换。
例如:2 + 3.5 会先将 2 转换为 2.0,再计算得到 5.5。
布尔型(bool)只有两个值:True 和 False。它们在内部分别对应整数 1 和 0。
布尔型支持逻辑与、或、非运算。Python 提供了两种表示方式:关键字和运算符。
and, or, not。推荐优先使用,可读性更好。&, |, ~。这是按位运算符,但在布尔值上效果等同于逻辑运算,不过需要注意优先级差异。特别注意:Python 中逻辑非的运算符是 not,而不是 C/C++ 中的 !。使用 ! 会引发语法错误。
| 变量 1 | 变量 2 | 与 (and/&)| 或 (or/|) | 异或 (^) |
| :---: | :---: | :---: | :---: | :---: |
| False | False | False | False | False |
| False | True | False | True | True |
| True | True | True | True | False |
非运算是单元运算,将 False 变为 True,True 变为 False。
为了方便检验一个变量是否为空或无效,Python 内置了 bool() 函数可以将任何类型转换为布尔型。转换规则如下:
0、0.0 转换为 False,其余为 True。'' 转换为 False,其余为 True。[]、空字典 {}、空集合 set() 转换为 False,其余为 True。None:转换为 False。print(bool(0), bool(10))
print(bool(0.0), bool(10.0))
print(bool(''), bool('Hello World!'))
print(bool(None), bool([]))
# 每条语句输出的都是:False True
在使用 and 和 or 时,Python 采用短路求值策略:
A and B:如果 A 为假,则不计算 B,直接返回 A。A or B:如果 A 为真,则不计算 B,直接返回 A。这在条件判断中非常有用,可以避免不必要的计算或潜在的错误。
除了比较类运算和单元运算外,其余的运算都将两个同类型的变量计算为一个同类型的结果。有时候我们希望立刻用这个结果赋给参与计算的两个变量中的一个,此时就可以使用赋值运算。
赋值运算符就是原本的运算符紧跟一个 =,例如:
+=:加后赋值-=:减后赋值/=:除后赋值*=:乘后赋值&=, |=, ^= 等位运算赋值x = 2
x += 1
print(x)
# 输出:3
也就是说,x += y 等价于 x = x + y。同理,还有 -=、/=、&=、>>= 等等赋值运算。
严格来说,增强赋值运算并不是纯粹的运算表达式,因为它构成了一个完整的语句,并没有直接的返回值(除非配合 lambda 或其他高级特性,但在基础用法中视为语句)。
本文详细讲解了 Python3 中三种基本类型的运算规则。以下是核心知识点回顾:
// 的特性,特别是负数情况下的取整行为;区分比较运算符 == 与赋值运算符 =。== 比较浮点数是否相等。and, or, not 关键字的使用,理解短路求值机制,掌握 bool() 转换规则。通过上述内容,读者应能熟练掌握 Python 基础数据类型的运算逻辑,为后续学习复杂数据结构及算法打下坚实基础。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online