1.更好的分配管理内存
2.方便统一管理
3.更贴近人类分类管理习惯
数值类型是不可变类型,一旦改变就意味着对象的改变,数字1,2是两个不同的对象,对变量重新赋值就会创造一个新的数字对象。
需要注意的是:python里的变量本身只是一个容器,本身没有数据类型的概念,只有1,2,'hello’等才具有数据类型的概念。
通常表现为十进制,可以用hex(),oct(),bin()转为16,8,2进制数。
print(hex(100))#0x60 print(oct(100))#0o144 print(bin(100))#0b1100100
可以看到,16进制以0b开头,8进制以0o开头,2进制以0b开头。
python 初始化的时候会自动建立一个小整数对象池,方便我们调用,避免后期重复生成!这是一个包含262个指向整数对象的指针数组,范围是-5到256。也就是说比如整数10,即使在程序里没有创建它,其实在 Python 后台已经创建了。
浮点数也就是小数,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,一般用科学计数法表示,把10用e代替1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。
a=1 print(type(a))#<class 'int'> a=float(a) print(type(a))#<class 'float'> a=int(a) print(type(a))#<class 'int'>
可以看到用int(),float()方法可以实现整型与浮点型的互相转化
复数由 实数部分 和 虚数部分 构成,可以用 a + bj, 或者 complex(a,b) 表示,复数的实部a和虚部b都是浮点数。
print(complex(1.2))#(1.2+0j)
对于math,用的地方在开发里并不是很多,在这里仅介绍几种常用的方法。
import math print(math.ceil(5.3)) # 6 # 向上取整 print(math.floor(5.3)) # 5 # 向下取整 print(math.pow(3, 4)) # 81.0 # 3的4次幂 print(abs(-10)) # 10 # 取绝对值 print(round(4.4)) # 4 print(round(4.5)) # 4 print(round(4.51)) # 5 print(round(3.5)) # 4 # 四舍六入 五成偶(四舍五入后为奇数则直接舍去小数点后的数,不进位,否则进一位) print(round(5.862, 1)) # 5.9 # 第二个参数代表保留精度为,默认为0
但在Python语言中,布尔类型只有两个值,True 与 False。
注意:首字母必须大写,不能有其它的花式变型。
""" 布尔类型应用 """ print(2 > 3) # False print(2 < 3) # True print(3 in [1, 2, 3]) # True print(3 == 9/3) # True 3 == 3.0 print(3 is 3.0) # False
""" 布尔函数 """ print(bool(True)) # True print(bool(False)) # False # 数值:0 0.0的bool值为False,其余的全为True print(bool(1)) # True print(bool(-1)) # True print(bool(0)) # False print(bool(0.0)) # False # 字符串:只有空字符串的bool值为False,其余均为True。注意:含有空格的字符串也是非空字符串 print(bool("yes")) # True print(bool("")) # False print(bool(" ")) # True print(bool("0")) # True # 列表 print(bool([])) # False print(bool([1, 2, 3])) # True # None print(bool(None)) # False None的布尔值永远为False """ 布尔计算 """ print(True + 1) # 2 print(False + 1) # 1
字符串是 Python 中最常用的数据类型之一,使用单引号或双引号来创建字符串,使用三引号创建多行字符串。
字符串的单引号与双引号都是 成对 出现的,不能一边单一边双。字符串是 不可变 的 序列数据类型,不能直接修改字符串本身,和数字类型一样!
# 如果需要换行 加换行符 \n,如果需要打印\n这个符号,那么加转义字符\\n s1 = "hello \n hansen" print(s1) #hello # hansen s2 = 'hello hansen2' print(s2) #hello hansen2 # 文本格式,保留文本的样式 s3 = """hello hansen3""" print(s3) #hello #hansen3
由于字符串是 序列数据结构 ,所以我们可以通过下标将字符串中某个字母取出来。下标也可称为索引,默认从0开始
name= 'hello world' print(name[4]) # o print(name[-1]) #d #用,下标取值,使用负值 -a表示逆向第a个值
####字符串类型是不可改变类型
name= 'hello world' name[2]='f' # TypeError: 'str' object does not support item assignment
str[begin,end,step] #从begin取值道end,步长为step(没隔step-1个元素进行一次取值)步长默认为1 name = 'good boy' print(name[3:7])#d bo #步长默认为一,取值遵循左开右闭 print(name[3:])#d boy #end默认为最后 print(name[:7])#good bo #begin默认为0 print(name[3:8:2])#dby
name='123' print(type(name))<class 'str'> int(name) print(type(name))<class 'int'> name="1.23" name=int(name)#ValueError: invalid literal for int() with base 10: '10.1' name='abc' int(name)#ValueError: invalid literal for int() with base 10: 'abc' #字符串转整数只能整数字符类型,转小数应用float() name='123.456' print(float(name))#123.456
""" 字符串拼接 """ #print('1'+'2') # 字符串用+做拼接 '12'
""" 字符串格式化 """ name = "hansen" age = 20 # %号格式需要考虑数据类型 # %s --> str # %d --> decimal # %f --> float print("%s年龄为%d" % (name, age))#hansen年龄为20 # str.format() 好处1:不用考虑数据类型 好处2:可以切换位置 # {} --> 占坑 print("{1}年龄为{0}".format(age, name))#hansen年龄为20 #{}内数据默认一一对应,改变{}值可以改变顺序 # f'' python3.6.4以上的版本 # {} --> 占坑 print(f"{name}年龄为{age}")#hansen年龄为20