21 - 数值类型

常见内置数值类型

数值类型是不可变类型(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的情况:

  • 被定义为假值的常量: NoneFalse
  • 任何数值类型的零: 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.realz.imag

所有数字类型都支持下列运算 :
(复数不支持整数除法、取余、n次方算法)
(x // y 为整数除法,结果忽略结果小数点后的数据)
(pow(0,0) = 1, 0 ** 0 = 1, 这是编程语言常见的作法)

运算 结果: 运算 结果:
x + y xy 的和 abs(x) x 的绝对值或大小(magnitude )
x - y xy 的差 c.conjugate() 复数 c 的共轭
x * y xy 的乘积 divmod(x, y) (x // y, x % y)
x / y xy 的商 pow(x, y) xy 次幂
x // y xy 的商数 x ** y xy 次幂
x % y x / y 的余数 -x x 取反

ref:
Python 文档:数字类型 - int, float, and complex
Python 文档:逻辑值检测

热门相关:明朝好丈夫   1号婚令:早安,大总裁!   重开地狱   神秘老公,晚上见!   万古第一帝