常见内置数值类型
数值类型是不可变类型(immutable type),它包括布尔类型、整数、浮点数与复数。
类型 | 英文名 | 构造方式 | 对应关键字 | 构造函数 |
---|---|---|---|---|
布尔 | Boolean | var = True |
bool |
bool() |
整数 | Integer | var = 5 |
int |
int() |
浮点数 | Float | var = 5.0 |
float |
float() |
复数 | Complex Number | var = 5.0 + 0j |
complex |
complex() |
数值类型通用运算 - 比较运算
在 Python 中有八种比较运算符,优先级相同。
运算 | 含意 | 运算 | 含意 |
---|---|---|---|
< |
严格小于 (strictly less than) | == |
相等(等于)(equal) |
<= |
小于或等于 (less than or equal) | != |
不等于 (not equal) |
> |
严格大于 (strictly greater than) | is |
对象标识 (object identity) |
>= |
大于或等于 (greater than or equal) | is not |
否定的对象标识 (negated object identity) |
小知识:
- 相同类型的序列也可以比较。如果俩个序列长度一致且各自元素按相同的字典顺序(lexicographically order)比较结果也相等,那么这俩个序列相等。
- 除不同的数值类型外,不同类型的对象相等比较的结果总是
False
。
对于某些对象类型(例如,类对象 class object),==
等价于is
。
因此,具有不同标识的类的实例比较结果通常为不相等,除非类定义了__eq__()
方法。 - 如果要确认俩个对象是否属于同一个类,可以比较二者
type()
返回的结果或比较二者的<object>.__class__.__name__
。
布尔类型
布尔类型只有俩个值,一个是True
,另一个是False
。
常见内置类型被视为False
的情况:
- 被定义为假值的常量:
None
和False
- 任何数值类型的零:
0
,0.0
,0j
,Decimal(0)
,Fraction(0, 1)
- 空的序列和多项集:
''
,()
,[]
,{}
,set()
,range(0)
通俗来讲,非空非零即为真。
布尔运算 --- and
, or
, not
这些属于布尔运算(Boolean Operations),按优先级排列:
运算 | 结果: | 备注 |
---|---|---|
not x |
if x is false, then True , else False |
|
x and y |
if x is false, then x, else y | 短路运算 |
x or y |
如果 x 为真值,则 x,否则 y | 短路运算 |
整数型、浮点型、复数型
Python完全支持三种数值类型的混合运算,因此平时不必太过在意它们的类型。
在Python中,复数的虚数部分由j
表示,而不是数学中常用的i
。这主要是为了增加代码在不同字体下的可读性。
要从一个复数 z 中提取这两个部分,可使用 z.real
和 z.imag
。
所有数字类型都支持下列运算 :
(复数不支持整数除法、取余、n次方算法)
(x // y
为整数除法,结果忽略结果小数点后的数据)
(pow(0,0) = 1
, 0 ** 0 = 1
, 这是编程语言常见的作法)
运算 | 结果: | 运算 | 结果: |
---|---|---|---|
x + y |
x 和 y 的和 | abs(x) |
x 的绝对值或大小(magnitude ) |
x - y |
x 和 y 的差 | c.conjugate() |
复数 c 的共轭 |
x * y |
x 和 y 的乘积 | divmod(x, y) |
(x // y, x % y) |
x / y |
x 和 y 的商 | pow(x, y) |
x 的 y 次幂 |
x // y |
x 和 y 的商数 | x ** y |
x 的 y 次幂 |
x % y |
x / y 的余数 |
-x |
x 取反 |
ref:
Python 文档:数字类型 - int, float, and complex
Python 文档:逻辑值检测