python 布尔值空间大小_[Python教程]04-1 Python标准数据类型-数字和布尔值,041Python...

Python标准数据类型

Numbers(数字) √

Boolean(布尔) √

String(字符串)

List(列表)

Tuple(元组)

Dictionary(字典)

Python 数字类型

数字数据类型用于存储数值。

他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。

当你指定一个值时,Number 对象就会被创建:

var1 = 1

var2 = 10

您也可以使用del语句删除一些对象的引用。

del语句的语法是:

del var1[,var2[,var3[....,varN]]]

您可以通过使用del语句删除单个或多个对象的引用。例如:

del var

del var_a, var_b

Python支持的数字类型

int(有符号整型)

float(浮点型)

complex(复数)

数字类型

示例

占用内存空间大小

范围

int

1, -3, -2945, 123, 0x69, 1073741823

28

-2**30+1~2**30-1 (0为24)

float

3.14, -0.23, 2e10, -70.2E-12

24

所有

complex

3.14j, -.6545+0J, 3e+26J

32

所有

查看对象的类型和占用内存空间的方法

import sys

print(type(12)) #

print(type(3.14)) #

print(type(1+2j)) #

print(sys.getsizeof(0)) # 24

print(sys.getsizeof(24)) # 28

print(sys.getsizeof(3.14) # 24

print(sys.getsizeof(3+4j)) # 32

int类型

# float转int

# 1.向下取整

int(3.14) # 3

int(9.99) # 9

# 2.四舍五入

round(3.14) # 3

round(9.99) # 10

# 3.向上取整

import math

math.ceil(3.14) # 4

math.ceil(9.99) # 10

# 二进制、八进制、十进制、十六进制转换

# 1.十进制转二进制

bin(12) # '0b1100', '0b'开头

# 2.十进制转八进制

oct(8) # '0o10', '0o'开头

# 3.十进制转十六进制

hex(16) # '0x10', '0x'开头

# 4.其他进制转十进制

int('0b101', 2) # 5, 二进制

int('0o7654321', 8) # 2054353, 八进制

int('0x2521', 16) # 9505, 十六进制

# 5.其他进制互转: 先转成十进制,再转成对应进制

bin(int('0x252a4', 16)) # '0b100101001010100100', 十六->十->二

oct(int('0b10001110111', 2)) # '0o2167', 二->十->八

# python固定在内存的int数据

x = 0

for y in range(10000):

x = int(str(y))

if id(x) != id(y):

break

print(x) # 257, 也就是说0~256这些int数据是固定在内存的,当变量解绑后,也不会从内存空间释放

float类型

# int转float

float(3) # 3.0

# 小数位设置

round(3.1415926, 1) # 3.1, 四舍五入保留1位小数

round(3.1415926, 3) # 3.142, 四舍五入保留3位小数

# 浮点数损失精度问题

0.1 + 0.2 # 按理结果应该是0.3,但实际返回0.30000000000000004

"""

为什么有极小的误差?

因为 Python 中使用双精度浮点数来存储小数。

在 Python 使用的 IEEE 754 标准(52M/11E/1S)中,8字节64位存储空间分配了52位来存储浮点数的有效数字,11位存储指数,1位存储正负号,即这是一种二进制版的科学计数法格式。

虽然52位有效数字看起来很多,但麻烦之处在于,二进制小数在表示有理数时极易遇到无限循环的问题。

其中很多在十进制小数中是有限的,比如十进制的 1/10,在十进制中可以简单写为 0.1 ,但在二进制中,他得写成:0.0001100110011001100110011001100110011001100110011001…..(后面全是 1001 循环)。

因为浮点数只有52位有效数字,从第53位开始,就舍入了。这样就造成了标题里提到的”浮点数精度损失“问题。

舍入(round)的规则为“0 舍 1 入”,所以有时候会稍大一点有时候会稍小一点。

"""

# 为了解决这个位,Python提供了另一种数字类型——Decimal

from decimal import Decimal

Decimal("0.1") + Decimal("0.2") # Decimal('0.3')

# 注意Decimal内传字符串,如果传float仍会有这个问题

Decimal(0.1) + Decimal(0.3) # Decimal('0.3999999999999999944488848769')

complex类型

# 获取实部虚部

x = 2.5+3.6j

x.real # 2.5, 实部

x.imag # 3.6, 虚部

# 共轭复数

x.conjugate() # (2.5-3.6j)

Python布尔类型

布尔型代表真假值,通常用在条件判断和循环语句中。

Python 定义了 bool 类型以及两个常量 True 和 Flase 代表真假。

# int转bool, 除了0为False,其余都是True

bool(0) # Flase

bool(12) # True

bool(-345) # True

# float转bool, 同理

bool(0.0) # Flase

bool(3.14) # True

bool(-23.455) # True

# complex转bool, 同理

bool(0.0+0j) # Flase

bool(3.14+1.2j) # True

bool(-23.455-2j) # True

# 所有对象都能转bool,包括bool类型

bool(True) # True

bool(Flase) # False

# 从上面可以看出,表示0的其布尔值基本都是False

# 表示假(错)的其布尔值基本都是False

# 表示空(None,空字符串,空列表,空元组,空字典)的其布尔值基本都是False

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值