(4)python从基础到实战-数据类型

一.目录

1.数据类型

 关于数据类型,目前常用的就以下四种:
类型描述
整型 int整数:比如1,-1,200,300
浮点数 float小数:比如1.1 -4.5 900.2 等
字符串(string)字符串就是字符组成的一串内容,Python中用成对的单引号或双引号括起来,比如"李小龙是一代武将" ‘hello-’
布尔值 bool布尔值就是我们常说的逻辑,可以理解为对(True)或错(False)

在前面已经讲过,在Python中的变量在使用前都必须赋值,变量赋值以后该变量才会被创建,这里说的“类型”就是变量所指的内存数据的类型。

1.a,b是变量,它们是没有类型的
2.a,b变量指向/代表的数据“hello”,100是有类型的。

如下图所示
关于变量和类型的说明

二.type()函数-查看数据类型

1.通过type()函数,来查看数据的类型
语法:type(object)
object就是要查看类型的数据,可以是一个具体的数据(即:字面量),也可以是变量(也就是查看该变量指向的数据的类型)

具体代码实现如下:


#演示type()使用 
name = "Tom"      #字符串 
age = 20          #整形 
score = 90.4   #浮点数(小数) 
gender = "男"      #字符串 
is_pass = True    #bool类型
#查看的变量的类型(本质是查看变量指向的数据类型) 
print(type(name)) 
print(type(age)) 
print(type(score)) 
print(type(gender)) 
print(type(is_pass))

整数类型:

整形介绍

  python整形就是用于存放整数值的,比如12,30,3456,-1等。

代码实现如下:

n1 = 45
n2 = 88
print("n1 =",n1)
print("n2 =",n2)

1.整型的使用细节

python的整数有十进制,十六进制,八进制,二进制

1.十进制就是最常见的写法,比如1,66,123等
2.十六进制写法:加前缀0×,由0-9和A-F的数字和字母组合
3.八进制写法:加前缀0o,由0-7数字组合
4.二进制写法:加前缀0b,只有0和1数字组合
5.运行时,会自动转换为十进制输出

代码实现如下:

print(10)      #十进制
print(0X10)    #十六进制
print(0O10)    #八进制
print(0b10)    #二进制
#运行如下
10
16
8
2

Python中的整型中关于字节和位的说明:

字节(byte):计算机中基本存储单元
位(bit):计算机中的最小存储单位
1byte = 8bit

规律:1.字节数随着数字增大而增大(即:python整型是变长的)
2.每次的增量是4个字节

整型的使用,代码实现如下:

 #字节数随着数字增大而增大
import sys  # 导入 sys 模块
n1 = 0
n2 = 1
n3 = 2
n4 = 2 ** 15
n5 = 2 ** 30
n6 = 2 ** 128
#在python中,可以通过sys.getsizeof返回对象(数据)的大小(按照字节单位返回)
print(n1,sys.getsizeof(n1),"类型",type(n1))
print(n1,sys.getsizeof(n2),"类型",type(n2))
print(n1,sys.getsizeof(n3),"类型",type(n3))
print(n1,sys.getsizeof(n4),"类型",type(n4))
print(n1,sys.getsizeof(n5),"类型",type(n5))
print(n1,sys.getsizeof(n6),"类型",type(n6))
print(sys.getsizeof(10))   #28字节  
代码运行如下:
0 24 类型 <class 'int'>
0 28 类型 <class 'int'>
0 28 类型 <class 'int'>
0 28 类型 <class 'int'>
0 32 类型 <class 'int'>
0 44 类型 <class 'int'>
28

Python 中的 sys 模块是一个内置模块,提供了与 Python 解释器和系统交互的功能,但需要显式导入后才能使用

2.浮点类型

在Python中,浮点类型可以表示一个数,例如,124.8 , 9.7 , -0.34等,浮点数也有其表现形式和大小限制,其中表现形式有两种:

1.十进制数形式,如:5.12 .512;
2.科学计数法形式, 如:5.12e2, 5.12E-2

浮点数的大小限制

max=1.7976931348623157e+308
min= 2.2250738585072014e-308

浮点数表现形式代码表现如下:

#浮点类型
n1 = 4.8
n2 = -6.9
n3 = .876
print("n1 =",n1)
print("n2 =",n2)
print("n3 =",n3)
运行结果如下:
n1 = 4.8
n2 = -6.9
n3 = 0.876

科学计数法形式代码如下:

#浮点数科学计数法表现形式:
n6 = 5.12e2  #5.12乘以10的2次方   512.0
n7 = 5.12E-2   #5.12除以10的2次方   0.0512
print("n6 =",n6)
print("n7 =",n7)

浮点类型在计算时,会存在精度损失,在Python中,精度损失问题通常出现在浮点数运算中。由于计算机使用二进制浮点数表示法(如IEEE 754标准),某些十进制小数无法精确表示为二进制浮点数,从而导致精度损失.
浮点数处理精度损失问题,代码如下:

#处理精度损失问题,必须导入Decimal类
from decimal import Decimal

#b = 8.1 / 3   #2.6999999999999997

b = Decimal("8.1") / Decimal("3") #2.7

print("b =",b)

运行结果如下:

b = 2.7

如上代码中这里,8.1 和 3 都是浮点数。由于 8.1 无法精确表示为二进制浮点数,因此在计算 8.1 / 3 时,结果会包含一个微小的误差,导致结果为 2.6999999999999997 而不是预期的 2.7。处理精度损失问题,这里必须导入Decimal类。

3.布尔类型 bool

具体什么是布尔类型:
1.布尔类型也叫bool类型,取值True和False
2.True和False都是关键字,表示布尔值。
3.bool类型适用于逻辑运算,一般用于程序流程控制,比如条件控制语句; 循环控制语句

代码实现如下:
#bool类型的使用规则

num1 = 200
num2 = 400
if num1 < num2:
   print("num1 < num2")
运行结果如下
num1 < num2

#把num1 > num2的结果赋给result变量
result = num1 > num2
print("result =",result)
运行结果如下:
result = False

由以上两串代码可知,第一个bool类型使用的是条件语句,第二个是逻辑判断场景。
bool类型使用规则:
1.python不支持单字符类型,单字符在Python中也是作为一个字符串使用;
2.用三个单引号’‘‘内容’’',或者三个双引号“““内容”””可以使字符串内容保持原样输出,在输出格式复杂的内容是比较有用的。
3.在字符串前面加’r’可以使整个字符串不会被转义。

代码实现如下:

#单字符作为字符串使用
str3 = 'B'
print("str3类型",type(str3))
运行结果:
str3类型 <class 'str'>

字符串驻留机制

这里的驻留机制就是说,Python仅保存一份相同且不可变字符串,不同的值被存放在字符串的驻留池中,Python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量。

 str1 = "YES"
str2 = "YES"
str3 = "YES"
print("str1的地址:",id(str1))
print("str2的地址:",id(str2))
print("str3的地址:",id(str3))
运行结果如下:
str1的地址: 2041787119152
str2的地址: 2041787119152
str3的地址: 2041787119152

那么现在验证驻留行为是否是正确的,代码实现如下:

str1 = "YES"
str2 = "YES"
print(id(str1) == id(str2))
运行结果如下:

True

由此可见,这个驻留机制是正确的,为真值
对于长字符串而言,是否能够驻留呢,那么来看下面的代码:

str1 = "这是一个较长的字符串,不会被驻留"
str2 = "这是一个较长的字符串,不会被驻留"
print(id(str1) == id(str2))
运行结果如下:
True

在这里,这是个长字符串,它是不会被驻留的,这就是个假值。

所以对于驻留机制而言总结如下:

  1. 字符串驻留:Python 会对一些短小的、不可变的字符串进行驻留优化,多个变量引用同一个字符串对象。

2.id() 函数:用于获取对象的内存地址,可以验证变量是否引用同一个对象。

驻留规则:短小的、直接定义的字符串通常会被驻留,而动态生成的字符串或较长的字符串可能不会被驻留
驻留机制的优点就是当需要相同的字符串时,可以直接从字符串池里拿来使用,避免频繁的创建和销毁,提升效率和节约内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追梦撩编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值