定义:python的变量在使用前必须赋值,数据类型指的是变量指定的内存数据的类型
string | 字符串类型 | 使用引号 |
int | 整型 | 整数 |
float | 浮点型 | 小数 |
bool | 布尔值(逻辑) | 输出true/false |
A,整数类型
整型字节
1,python的整数有十六进制,十进制,八进制,二进制
分别写作"0x数字","数字","0o数字","0b数字"
2,在编程中存储数据的基本单位是字节(byte) 1 byte = 8 bit(位)
python中整型是变长的,每次的增量是4个字节
例:
定义
s1 = 1
s2 = 2 ** 24
s3 = 2 ** 56
输出
print(sys.getsizeof((s1)),"类型",type(s1))
print(sys.getsizeof((s2)),"类型",type(s2))
print(sys.getsizeof((s3)),"类型",type(s3))
——>
28 类型 <class 'int'>
28 类型 <class 'int'>
32 类型 <class 'int'>
B,浮点类型
1,表现形式
十进制形式 | 0.512 | .512 |
科学技术形式 | 5.12e2 (5.12乘10十的二次方) | 5.12E-2(5.12除以10十的二次方) |
2,查询浮点数取值范围
sys.float_info
3,浮点类型计算后,存在精度的损失,解决方案:Decimal
例:
定义
p = 8.1 / 3
输出
print(p)
——>2.69999999999997
使用Desimal需要先导入decimal类
from decimal import Decimal
定义
p = Decimal("8.1") / Decimal("3")
输出
print(p)
——>2.7
C,布尔类型
1,布尔类型一般用于程序流程控制
2,布尔类型又叫bool类型,取值False和True
例:
定义
阿尔菲诺 = 21
阿莉塞 = 20
输出
if 阿尔菲诺>阿莉塞:
print("阿尔菲诺是哥哥")
——>阿尔菲诺是哥哥
把阿尔菲诺>阿莉塞的结果赋给result
result = 阿尔菲诺>阿莉塞
print(result)
——>true
查看类型
输出
print(type(result))
print(type(2>1))
——><class 'bool'>
——><class 'bool'>
3,布尔类型可以和其他数据类型进行比较,在比较时True=1 False=0
例
定义
a = False
b = True
输出
print(a+b)
——>1
输出
if a == b:
print("YES")
——>YES
4,在python中,非零被视为真值,零则被视为假值
if 0:把0当布尔值使用
print("OK")
——>(因为0是假值,无内容被输出)
if -1:
print("OK")
——>OK
D,字符串类型
1,python不支持单字符,单字符会被看作字符串
定义
a = "A"
输出
print(type(a))
——><class 'str'>
2,三个单引号,或三个双引号可以让内容保持原样输出
定义
content =
"""
[pl.] (书的)目录,目次
the different sections that are contained in a book"""
输出
print(content)
——>[pl.] (书的)目录,目次
the different sections that are contained in a book
3,字符串前加r,可以使整个字符串不被转义
定义
address = r"D:\download\tom\name"
输出
print(a)
——>D:\download\tom\name
4,字符串驻留机制
a,python值保存一份相同且不可变字符串,不同的值被存放在字符串的驻留池中
b,python驻留机制对相同的字符串只保留一份拷贝
c,创建新的相同字符串时不会开辟新空间
例
定义
str1 = "hello"
str2 = "hello"
str3 = "hello"
输出
print(id(str1))
print(id(str2))
print(id(str3))
——>
54236236
54236236
54236236
5,驻留机制使用条件
a,字符串由26个英文字母大小写,0-9,_组成
定义
a = "abc#"
b = "abc#"
输出
if id(a) != id(b):
print("NO")
——>NO
b,字符串长度为0或者1
定义
a = ""
b = ""
输出
if id(a) == id(b):
print("YES")
——>YES
c,字符串在编译时驻留,而非运行时
定义
a = "abc"
b = "".join(["a","bc"])
输出
if a == b:
print("YES")
——>YES
输出
if id(a) != id(b):
print("NO")
——>NO
d,【-5,256】的整数数字
E,验证数据类型
type(object)
用法
验证数据类型
输出
print(type(3.1415))
——><class 'float'>
将验证结果储存为变量值
输入
int_type=print(type(3.1415))
输出
print(int_type)
——><calass 'float'>
F,数据转换
str(x) | 将x转换为字符串 |
int(x) | 将x转换为整数 |
float(x) | 将x转换为浮点数 |
提问:以下定义,print(result)的结果是{Tom的年龄是 8}吗?
age = 8
result = "Tom的年龄是:" + age
否,因为字符串+整数不合法
隐式类型转换(自动转换)
1,python的变量类型不是固定的
a = 1
print(type(a))
a = 1.5
print(type(a))
a = "alarm"
print(type(a))
2,运算时,数据类型会向高精度转换,float精度大于int
定义
a = 1
b = a+0.5
输出
print(b,type(b))——>1.5 <class 'float'>
显式类型转换
1,对变量数据类型进行转换时,将数据类型作为函数名
2,函数返回的新的对象或值,就是强制转换后的结果
定义
a = 1
b = float(a)
输出
print(b,type(b))——>1.0 <class 'float'>
3,浮点数转整数会丢失小数,整数转浮点数会增加小数
定义
a = 1.0
b = int(a)
输出
print(b,type(b))——>1 <class 'int'>
4,字符串进行类型转换的时候,需要注意是否有效
定义
a = "hello"
b = int(a)
输出
print(b,type(b))——>hello不是整数,报错