前后端知识库 前后端知识库
首页
    • JavaScript
    • React
    • Vue
  • Python
  • Sanic
  • Linux
  • Ansible
归档
GitHub (opens new window)
首页
    • JavaScript
    • React
    • Vue
  • Python
  • Sanic
  • Linux
  • Ansible
归档
GitHub (opens new window)
  • Sanic

  • Python

    • Python 的动态类型介绍
    • 数字类型
    • Set类型
    • 字符串
    • 列表
    • 元组
    • 通用序列
    • 字典
    • 文件
    • 语句和语法
    • 赋值语句
    • 打印
    • if语句
    • loop循环
    • 迭代器和生成器
    • 文档
    • 函数
    • 作用域
    • 参数
    • 函数的高级特性
    • 模块
    • 模块包
    • 模块高级用法
    • 类 class
    • Python命名空间
    • 运算符重载
    • 类的设计模式
    • 类的高级主题
    • 异常
    • 异常对象
    • Unicode与字节串
    • 管理属性
    • 装饰器
    • 元类
    • 执行细节
  • backend
  • Python
devin
2023-09-09

数字类型

# 数字类型

1.Python 的数字常量:

  • 整数:1234,-1234,0。Python 支持无穷整数大小

    Python3 中,整数不再区分一般整数与长整数

    Python2.7 中整数分为一般整数(32 位)与长整数(支持无穷整数大小)。 整数以l或者L结尾时为长整数。当整数值超过 32 位时自动转换为长整数

  • 浮点数:1.23,1.,.3,3.14e-10,4E10,4.0e+10

  • 八/十六/二进制整数:0o177(小写的字符o或者大写的O),0x9ff,0b101010

    对于 Python2.7 来讲,八进制整数为0177(没有小写的字符o)

  • 复数:3+4j,3.0+4.0j,3j,3J

    2.数字类型转换:

  • hex(intx)、oct(intx)、bin(intx)、str(intx)将整数intx转换成十六/八/二/十进制表示的字符串

  • int(strx,base)将字符串strx根据指定的base进制转换成整数。base默认为 10

  • float(strx)将字符串strx转换成浮点数

  • complex(num_real,num_imag)创建一个复数,实部为数字num_real, 虚部为数字num_imag
    数字类型转换

    3.混合类型表达式中,Python 先将被操作对象转换成其中最复杂的操作对象的类型。

  • 整数与浮点数混合操作时,将整数自动转换成浮点数

  • 浮点数与复数混合操作时,将浮点数自动转换成复数

    也可以通过int(),float(),以及complex()执行手动转换

    4.Python 允许执行连续比较,且比较链可以任意长:

  • a<b<c结果等同于a<b and b<c

  • a<b>c结果等同于a<b and b>c

    这二者并不完全等价,因为a<b<c中的表达式b只需要计算一次; 而a<b and b<c中的表达式b需要计算两次

    5.Python 的除法x/y在 Python3 和 Python2.7 中不同

  • Python3 中的除法保留小数部分,无论是整数除法还是浮点除法

  • Python2.7 中的除法:对整数除法会截取整数部分放弃小数部分,对小数除法会保留小数部分

Python 中还有一种除法:Floor 除法x//y,它会将结果向下取整到不大于它的最大整数

即使是浮点的 Floor 除法,结果也是取整的浮点数

除法和Floor除法

6.将字符串转为整数除了用int()函数外,也可以通过eval()函数将字符串转为整数;
整数转字符串除了用str()/hex()等函数外,也可以用格式化字符串。
字符串和整数的转换

7.Python 支持将整数当作二进制位串对待的位操作。
整数的按位异或

8.Python 支持许多对数字处理的内置函数与内置模块:

内置函数位于一个隐性的命名空间内,对应于builtins模块(python2.7 叫做 __builtins__模块)

  • math模块:如math.pi,math.e,math.sqrt....

  • 内置函数,如pow(),abs(),...
    数学模块与数学函数

    9.random模块提供的工具可以生成 0 ~ 1 之间的随机浮点数、两个数字之间的任意整数、 序列中的任意一项。
    random模块

    10.浮点数缺乏精确性,因为存储浮点数的空间有限(这是硬件相关的内存缺陷), 可以用Decimal对象解决精度问题。
    Decimal对象来自于decimal模块,它类似于浮点数,但是有固定的位数和小数点, 因此是固定精度的小数。相对于浮点数,它带来了微小的精度损失。

  • 设置全局的精度和舍入模式:decimal.getcontext().prec=5,将全局精度设置为小数点后 5 位

  • 可用整数、浮点数、字符串初始化Decimal对象
    Decimal对象

    11.Python 中的分数类型是Fraction对象,来自于fractions模块。

  • Fraction对象以一个分子,一个分母初始化:Fraction(1,4); 也可以从浮点数或者浮点数的字符串初始化:Fraction('0.25'),Fraction(0.25)

  • Fraction对象能保证精确性,且能自动简化结果

  • 从浮点数产生分数有两个方法: _ 调用Fraction的构造函数:Fraction(0.25) _ 用Fraction.from_float()函数:Fraction.from_float(0.25)

    从浮点产生分数时,可以通过.limit_denominator()限制分母的最大值。
    Fraction对象

    12.浮点数有个as_integer_ratio()方法,能生成(分子,分母)的元祖。
    浮点的元祖表示

    13.整数、浮点数、Fraction、Decimal 可以混合运算

    Fraction与Decimal不可以混合运算

graph LR
id1(整数)-->|提升|id2(浮点数);
id2(浮点数)-->|提升|id3(Fraction);
id2(浮点数)-->|提升|id4(Decimal);
1
2
3
4

14.Python 中的布尔类型为bool,它只有两个值True和False。
True和False是预定义的内置变量名,其在表达式中的行为与整数 1 和 0 是一样的。实际上他们就是内置的int类型的子类。
布尔类型的整数行为

15.真和假是 Python 中每个对象的固有属性:每个对象不是真就是假。 该属性可以用于任何需要bool`值的地方。

  • 一个数如果不是 0,则为真;如整数 0,浮点数 0.0 都是 假
  • 其他对象如果非空,则为真;如空字符串 ""为假,空字典{}为假, 空列表[]为假,None对象为假
编辑 (opens new window)
上次更新: 2023/09/09, 12:09:00
Python 的动态类型介绍
Set类型

← Python 的动态类型介绍 Set类型→

Theme by Vdoing | Copyright © 2023-2023 devin | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式