数值类型

在Python中数字并不是真的只是一种对象类型,而是一组相似类型的分类.

Python 数值类型工具包括

  • 整数和浮点对象
  • 复数对象
  • 小数:固定精度对象
  • 分数:有理数对象
  • 集合:带有数值运算的集合体
  • 布尔值: 真和假
  • 内置函数和模块:round,math, random 等
  • 表达式:无限制整数精度,位运算,十六进制,八进制和二进制格式
  • 第三方扩展:向量,库,可视化,作图等  

数值字面量

  • Python中数值字面量和构造函数
字面量 解释
1234, -24, 999999999 整数(无大小限制)
1.23, 1., 3.14e-10, 4E210, 4.0e+210 浮点数
0o177, 0x9ff, 0b101010 八进制,十六进制,二进制字面量
3+4j, 3.0+4.0j, 4J 复数字面量
set('spam'), {1, 2, 3, 4} 集合的构造形式
Decimal('1.0'), Fraction(1, 3) 小数和分数扩展类型
bool(X), True, False 布尔类型和字面量
  • 整数和浮点字面量  
    • 整数写成十进制数字串.
    • 浮点数带有一个小数点,也可使用科学计数法加上e或E作为标志.
      如果编写一个带有小数点或幂的数字,那么Python将它创建为一个浮点数对象,并且这个对象在表达式中时,将启用浮点数(而不是整数)的运算法则. 
    • 十六进制,八进制,二进制字面量
      • 十六进制(16为基数):0x开头,后接0-9和A-F,大小写均可.如 0x9ff, 0X9FF.
      • 八进制(8为基数):0o开头,后接0-7, 如:0o177, 0O177.
      • 二进制(2为基数): 0b开头,后接0-1, 如:0b1010101, 0B101010.
  • 复数
    Python中复数字面量写成实部+虚部的形式,虚部是以J或者j结尾.如: 3+4j.
  • 其他数值类型

Python表达式运算符
表达式式处理数字的基本工具,表达式的定义是:数字(或其他对象)与运算符相结合,并被Python在执行时计算为一个值.    

Python中所有的运算符表达式

运算符 描述 
yield x 生成器函数send协议
lambda args: expression 创建匿名函数
x if y else z 三元选择表达式(仅当y为真时,x才会被计算)
x or y 逻辑或(仅当x为假时,y才会被计算)
x and y 逻辑与(仅当x为真时,y才会被计算)
not x 逻辑非
x in y, x not in y 成员关系(可迭代对象,集合)
x is y, x not is y 对象同一性测试
x < y, x <= y, x > y, x >= y 大小对比,集合的子集和超集
x == y, x != y 等价性运算符
x | y 按位或,集合并集
x ^ y 按位异或,集合对称查集
x & y 按位与,集合交集
x << y, x >> y 将x左移或右移y位
x + y 加法,拼接
x - y 减法,集合差集
x * y 乘法,重复
x % y 求余,格式化
x / y, x // y  真除法,向下取整
-x, +y 取负,取整
~x 按位非(取反码)
x ** y 幂运算
x[i] 索引(序列,映射等)
x[i:j:k] 分片
x(...) 调用(函数,方法,类,其他可调用对象)
x.attr 属性引用
(...) 元组,表达式,生成器表达式
[...] 列表,列表推导
{...} 字典,集合,集合与字典推导

该图中运算符从上到下,优先级逐渐升高

  • 混合运算遵循运算符优先级.如:A * B + C * D,先计算A * B和C * D,其次计算加法
  • 括号分组表达式,优先于其他运算符.如:(x + y) * z,先计算括号中的表达式,再计算之外的表达式
  • 混合类型向上转型 一个整数和一个浮点数相加,其结果为浮点数,如:4 + 3.14,表达式的值为7.14, 即在混合类型表达式中,Python首先将被操作的对象转换成其中最发复杂的操作数的类型,然后再对相同类型的操作数进行数学运算.
数字的实际应用

变量与基础表达式

  • 变量在第一次赋值时被创建
  • 变量在表达式中使用时,会被替换成它们的值
  • 变量在表达式中使用前,必须已被赋值
  • 变量引用对象,而且从不需要事先申明

例如:

>>> a =3 
>>> b = 4
>>> a + 1, a - 1
(4, 2)

数值的显示格式 使用不同的显示方式,相同数值其显示效果不同,如:

>>> num = 1 / 3.0
>>> num
0.3333333333333333
>>> '%e' % num
'3.333333e-01'

普通比较与链式比较

  • 普通比较:即为普通编程中的比较方式,如 比较a大于b且a小于c时,普通比较的表达式为:
>>> a > b and a < c
  • 链式比较:该比较更接近与数学表达式,如比较a大于b且a小于c时,其表达式为:
>>> b < a < c

除法:经典除法,向下取整除法和真除法

  • 经典除法:即为普通编程中使用的除法,当除数和被除数都为整数时,其商向下去掉小数部分,如
>>> 5 / 2
2

当除数和被除数其中任意一个为浮点数时,其商保留全部位数,如:

>>> 5 / 2.0 
2.5
  • 向下取整除法:该操作不考虑操作对象类型,总是省略结果的小数部分,如
>>> 5 // 2
2
>>> 5 // 2.0 
2.0
  • 真除法:如数学中的除法一致,不论操作对象类型是什么,总是保留其全部值,如
>>> 5 / 2
2.5
>>> 5 / 2.0
2.5

在python3.x 中只支持真除法(/)和向下取整除法

整数精度问题

在python3.x中整数支持无限制大小(有足够的内存)

复数

十六进制,八进制,二进制:字面量转换

  • 八进制表示方法及十进制转换八进制工具
>>> 0o1, 0o20, 0o377
(1, 16, 255)
>>> oct(255)
'0o377'
  • 十六进制表示方法及十进制转换十六进制工具
>>> 0x01, 0x10, 0xFF
(1, 16, 255)
>>> hex(255)
'0xFF'
  • 二进制表示方法及十进制转换二进制工具
>>> 0b1, 0b10000, 0b11111111
(1, 16, 255)
>>> bin(255)
'0b11111111'

按位操作

updatedupdated2025-03-022025-03-02