三、基本数据类型
1、什么是数据?为什么要有多种类型的数据?
1.1、数据即变量的值,例如 age=18,18是我们需要保存的数据。
1.2、变量的是用来反映/保持,状态以及状态变化的,针对不同的状态应该用不同类型的数据去标识。
1.3、了解Python是一门解释型的强类型动态语言
概括来说编程语言的划分有以下三种模式:
1.3.1、编译型or解释型
1.3.2、强类型or弱类型
1.3.2.1、强类型语言:数据类型不可以被忽略的语言
即变量的数据类型一旦被定义,那就不会再改变,除非进行强转。
在Python中,例如: name = 'egon',这个变量name在被赋值的那一刻,数据类型就被确定死了,是字符型,值为'egon'。
1.3.2.2、弱类型语言:数据类型可以被忽略的语言。
比如linux中的shell中的一个变量,是随着调用方式的不同,数据类型科随意切换的那种。
1.3.3、动态型or静态性
1.3.3.1、动态型语言:运行时才进行数据类型检查
在变量赋值的时候,就确定了变量的数据类型,不用事先给变量指定的数据类型
1.3.3.2、静态型语言:需要事先给变量的数据类型,不用事先给变量制定可随意切换的那种。
1.3.4、所以综上所述,Python是一门解释型的强类型动态语言。
2、数字
2.1、int整型
定义:例如:age=10 #age=int(10)
用于标识:年龄,等级,身份证号,qq号,个数
2.2、float浮点型
定义:salary=3.1 #salary=float(3.1)
用于标识:工资,身高,体重。
2.3、其他类型(了解)
2.3.1、int整型
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647;
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807。
2.3.2、long长整型
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
注意:在Python3里不再有long类型了,全都是int
>>> a= 2**64
>>> type(a) #type()是查看数据类型的方法
<type 'long'>
>>> b = 2**60
>>> type(b)
<type 'int'>
2.3.3、complex复数型
>>> x=1-2j
>>> x.imag #复值
-2.0
>>> x.real #真值
1.0
2.4、字符串
在Python中,加了引号的字符就是字符串类型,Python并没有字符类型。
定义:name='egon' #name=str('egon')
用于标识:描述性的内容,比如名字,性别,国籍,种族。
2.4.1、单引号,双引号,三引号的区别
在Python中,单引号,双引号,三引号并没有任何的区别,需要注意不同引号间的配合。2.4.2、字符串拼接
2.4..2.1只能在字符串之间进行,且只能相加或者是相乘。例如:
>>> name='egon'
>>> age='18'
>>> name+age #相加其实就是简单拼接
'egon18'
>>> name*5
'egonegonegonegonegon'
2.4.2.2、注意1:字符串相加的效率不高;
字符串1+字符串2,并不会在字符串1的基础上加入字符串2,而是申请一个全新的内存空间存入字符串1和字符串2的和。
2.4.2.3、注意2只能字符串加字符串,不能字符串加其他类型。
2.5、列表
在[]内用逗号分隔,可以存放n个任意类型的值
定义:students=['egon','alex','wupeiqi',] #students=list(['egon','alex','wupeiqi',])
用于标识:存储多个值得情况,比如一个人有多个爱好
例如:存放多个学生的信息:姓名,年龄,爱好
>>> students_info=[['egon',18,['play',]],['alex',18,['play','sleep']]]
>>> students_info[0][2][0] #取出第一个学生的第一个爱好 'play'
2.6、字典
2.6.1、什么要用字典
存放一个人的信息:姓名,性别,年龄,很明显是多个值,在基于知道对应位置的情况下,可以使用列表去存放。在不知道对应关系的情况下,需要需求一种可以存放多个任意类型的值,又可以硬性规定值的映射关系的类型,比如key=value,这就用到了字典。
在{}中用逗号分隔,可以存放多个key:value的值,value可以是任意类型。
定义:info={'name':'egon','age:18','sex:18'} #info=dict({'name':'egon','age:18','sex:18'})
用于标识:储存多个值的情况,每个值都有唯一对应的key,可以更为方便高效的取值。
例如:
info={
'name':'egon',
'hobbies':['play','sleep'],
'company_info':{
'name':'Oldboy',
'type':'education',
'emp_num':40,
}
}
print(info['company_info']['name']) #取公司名
students=[
{'name':'alex','age':38,'hobbies':['play','sleep']},
{'name':'egon','age':18,'hobbies':['read','sleep']},
{'name':'wupeiqi','age':58,'hobbies':['music','read','sleep']},
]
print(students[1]['hobbies'][1]) #取第二个学生的第二个爱好
2.7、布尔类型
2.7.1、布尔值,一个Ture,一个False
我们在编写程序让计算机运行时,应该是让计算机无限接近人脑,或者说,人脑能干什么,计算机就应该能干什么,人脑的主要作用是数据运算与逻辑运算,此处的布尔类型九模拟人的逻辑运算,即判断一个条件成立时,用Ture标识,不成立则用Flase标识。
>>> a=3
>>> b=5
>>>
>>> a > b #不成立就是False,即假
False
>>>
>>> a < b #成立就是True, 即真
True
接下来就可以根据条件结果来干不同的事情了:
if a > b
print(a is bigger than b )
else
print(a is smaller than b )
上面是伪代码,但意味着, 计算机已经可以像人脑一样根据判断结果不同,来执行不同的动作。
2.7.2、注意:所有的数据类型都自带布尔值
None,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False
其余皆为True
2.8、重点:
2.8.1、可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典。
2.8.2、不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)