变量,数据类型分类

### 变量

1.1变量的概念
可以改变的量就是变量,实际指代的是内存中的一块空间.
#变量不能指向多个值,只能指向一个值,如果一个值没有任何变量指向,那么这个值就会被系统释放掉,为了节省内存空间.(内存条是有限的,内存断电消失)
例如:
a=1
a=2
print(a) res=2
1.2变量定义的三种方式
第一种:
a=1
b=2
print(a)
print(b)
第二种:
a,b=1,2
print(a,b)
第三种:
a=b=3
print(a,b)
#print可以打印多个变量,中间要用","隔开.
1.3变量的命名
1:字母数字下划线,首字符不能为数字.
2:严格区分大小写,且不能使用关键字.
3:变量命名有意义,且不能使用中文.
#十六进制中的abcdef不区分大小写,python中变量要严格区分大小写.
#关键字的查找:
print(keyword.kwlist)
#import 引入 keyword 模块 object 对象 callable 调用
#变量命名有意义:
car=“奔驰”
#中文可以当做变量,但严禁使用.(容易出现乱码,占用空间)
1.4变量交换的两种方式
第一种:(通用写法)
a=1 b=2
tmp=a
a=b b=tmp
print(a,b) res:a=2,b=1
第二种:(python特有)
a=1 b=2
a,b=b,a
print(a,b) res:a=2,b=1
1.5常量的定义
约定俗成全都变成大写,这个值永远不能改变.
例如:
SHENFENZHENG=“210202200010106688”

###六大标准数据类型
1.1数据类型的分类
1:Number 数字类型(int整型 float浮点型 bool布尔型 complex复数类型)
2:str字符串类型
3:list列表类型
4:tuple元组类型
5:set集合类型
6:dict字典类型

1.2Number 数字类型又分为四类
1:int整型 2: float浮点型 3:bool布尔型 4: complex复数类型
(1)int整型
#整型包括正整数,负整数,零
#var 变量 res 结果 type 获取一个值的类型 class类型id获取一个值的地址
例如:
intvar=100
print(intvar)
求100是什么类型?
res=type(intvar)
print(res)
求100在内存中的地址?
res=id(intvar)
print(res)

整型又分为二进制整型,八进制整型,十六进制整型
1>二进制整型
intvar=0b10
print(intvar)
求类型:print(type(intvar))
求地址:print(id(intvar))
2>八进制整型
intvar=0o123
print(intvar)
求类型:print(type(intvar))
求地址:print(id(intvar))
3>十六进制整型
intvar=0xab
print(intvar)
求类型:print(type(intvar))
求地址:print(id(intvar))

(2)float浮点型
#浮点型相当于小数.
浮点型有两种表达方式:
第一种:
floatvar=3.14
print(floatvar)
print(type(floatvar))
第二种:科学计数法
floatvar=5.1e4
print(floatvar) res=51000.0
print(type(floatvar))
#e4表示向右平移4位,相当于乘以10的4次幂.

(3)bool布尔型
布尔型只有两个值:True真的和False假的
#True和False首字母必须大写.
#True真的代表1,False假的代表0.原码中的1代表负数.0代表正数.
例如:
boolvar=True
print(boolvar)
print(type(boolvar))

(4)complex 复数类型
#复数是由实数和虚数组成.例如:5+3j (5代表实数,3j代表虚数)
#如果有一个数的平方等于-1,那么这个数就是j,表达一个高精度的类型,科学家认为有.
#复数必须有虚数部分.

复数有两种表达方式:
第一种:
complexvar=3-10j
print(complexvar)
print(type(complexvar))
第二种:
complexvar=complex(3,-10)
print(complexvar)
print(type(complexvar))

1.3容器类型又分为五类
1:str字符串类型
2:list列表类型
3:tuple元组类型
4:set集合类型
5:dict字典类型

(1)str 字符串类型
#用引号引起来的就是字符串.
#可获取,不可修改,有序.
#字符串正向索引从零开始从左往右递增,逆向索引从-1开始从右向左递减.
#获取字符串当中的值,字符串(变量)加中括号配合所属下标放入中括号中.
#len获取容器类型数据的长度,元素的总个数.
#总长度减去1就是列表的最后一个数下标.
#里面是字符.
字符串有三种表达方式:
第一种:单引号字符串
strvar=‘同学好,今天天气晴朗’
print(strvar)
print(type(strvar))
第二种:双引号字符串
strvar=“同学好,今天天气晴朗”
print(strvar)
print(type(strvar))

转义字符:斜杠+某个字符
1>将有意义的字符变得无意义.
2>将无意义的字符变得有意义.
#\n换行
#\t缩进或者叫水平制表符(一般是4个空格距离)
#\r将\r后面的字符直接拉到当前行行首
#如果句中存在内外两组双引号(单引号),用两个斜杠分别在内部一组的引号前面分别加一个斜杠,起到字符串失效效果.或者内部一组(外部一组)换成单引号(双引号).
#单引号等同于双引号,没有区别.
例如:
strvar=“同学好,\n今天天气晴朗”
print(strvar)
res=同学好,
今天天气晴朗

strvar=“同学好,今天天气\r晴朗”
print(strvar) res=晴朗

strvar=“同学好,\n今天天气\r晴朗”
print(strvar)
res=同学好,
晴朗

第三种:三引号字符串
#三个单引号或者三个双引号.
#注释是字符串.
#支持跨行效果.
#不需要额外转义,里面可以存在多组单双引号.
#注释如果外面是三个双引号(单引号),里面就是三个单引号(双引号).

元字符串
#“字符串"前面+r,代表不转移字符,原型化输出字符串.
#应用于表达路径时为了防止转义.
例如:
strvar=r"E:\python\nay2”

格式化字符串
格式化字符串公式:“字符串”%(值1,值2,值3)
占位符有三种:
1:%d整型占位符
2:%f浮点型占位符
3:%s字符串占位符

%d整型占位符
strvar=“小马学习犯困,买了%d个风油精” % (500)
print(styvar)
res=小马学习犯困,买了500个风油精

%2d表示占两位
#原字符串默认居右,不够两位用空格表示.
strvar=“小马学习犯困,买了%2d个风油精” % (5)
print(styvar)
res=小马学习犯困,买了 5个风油精#5贴在个的后面

%-2d表示占两位
#原字符串默认居左,不够两位用空格表示.
strvar=“小马学习犯困,买了%-2d个风油精” % (5)
print(styvar)
res=小马学习犯困,买了5 个风油精#5贴在了的后面

%f浮点型占位符
strvar=“小马发了%f元”%(9.9)
print(styvar)
res=小马发了9.900000元#系统默认保留6位

%.2f浮点型表示小数点保留两位
strvar=“小马发了%.2f元”%(9.9)
print(styvar)
res=小马发了9.90元

%f存在四舍五入的情况
strvar=“小马发了%.1f元”%(9.18)
print(styvar)
res=小马发了9.2元

%s字符串占位符
strvar="%s"%(“小马发了工资”)
print(styvar)
res=小马发工资
#可以全部用%s占位符进行取代.
#%.0f表示没有保留小数.
综合案例:
strvar="%s看好了一辆车,买了%d辆,花了%f元"%(“小胡”,2,9.9)
print(styvar)

(2)list 列表类型
#列表用中括号表示.
#列表正向索引从零开始从左往右递增,逆向索引从-1开始从右向左递减.
#获取列表当中的值,listvar(变量)加中括号配合所属下标放入中括号中.
#len获取容器类型数据的长度,元素的总个数.
#总长度减去1就是列表的最后一个数下标.
#可获取,可修改,有序.
#里面是元素.
定义一个空列表:
listvar=[]
print(listvar)
res=[]

正常列表:
listvar=[2,3.1,True,3+9j,“小胡”]

获取列表当中的值:
res=listvar[1]
print(res) 结果是3.1
res=listvar[-4]
print(res) 结果是3.1

获取列表当中最后一个元素:
python特有(直接通过-1下标取元素)
res=listvar[-1]
print(res) 结果是小胡

其他语言的通用写法:
获取列表的长度(元素总个数):
res=len(listvar)
print(res) 结果是5
获取列表当中最后一个元素:
res1=listvar(res-1)
print(res1)

修改列表里面的值:
listvar[2]=False
print(listvar)
res=[2,3.1,False,3+9j,“小胡”]
或者:
listvar[2]=False
res=listvar[2]
print(res)
结果是False

(3)tuple 元组类型
#逗号是标识是否是元组的标识符.没有括号也可以,一般情况加上.
#元组正向索引从零开始从左往右递增,逆向索引从-1开始从右向左递减.
#获取元组当中的值,tuplevar(变量)加中括号配合所属下标放入中括号中.
#len获取容器类型数据的长度,元素的总个数.
#总长度减去1就是列表的最后一个数下标.
#可获取,不可修改,有序.
#里面是元素.
定义一个空元组:
tuplevar=()
print(tuplevar)
res=()

正常元组:
tuplevar=(“小明”,“小李”,“md”,“小刘”,“王凯”)
print(tuplevar)

获取元组当中的值:
res=tuplevar[2]
print(res)

举例:
tuplevar=([小明])
res=type(tuplevar)
print(res)
结果是列表

tuplevar=([小明],)
res=type(tuplevar)
print(res)
结果是元组

(4)set 集合类型
#作用是交叉并补.
#集合是用{}来表示.
#特点:无序,不能通过下标来获取对应值,不能修改集合的值.
#集合有自动去重的特征.
#可获取是指获取值.
#集合类型里面是元素.
定义一个空集合:
setvar=set()
print(lsetvar)
res=set()

正常集合:
setvar={“小马”,“小刘”,“校长”,“小米”}
print(setvar,type(setvar))
res={“小马”,“小刘”,“校长”,“小米”}或
res={“小刘”,“小马”,“校长”,“小米”}

集合有自动去重的特征:
setvar={“小马”,“小刘”,“小米”,“小米”}
print(setvar)
res={“小马”,“小刘”,“小米”}

(5)dict 字典类型
#键值之间用冒号隔开,键值对之间用逗号隔开.
#通过键值对,可以清晰的明白这套字典里存储的数据具体指代什么.列表里面表达不了.
#想要获取字典里面的值,必须要通过值所对应的键才能获取到.
#字典的键,推荐大家用变量命名的字符串进行使用.
#字典的键和集合的值有数据类型上的要求.
#python3.6版本,对字典做了优化,存储数据的时候用的哈希算法,但是在拿出数据的时候,重新按照定义的顺序做了排序,所以看起来是有序,实际上是无序的.
#获取字典当中的值,dictvar(变量)加中括号配合所属键放入中括号中.
字典的特点:
键值对存储的数据,表面上是有序,实际上是无序.
语法:dictvar={键1:值1,键2:值2}

定义一个空字典:
dictvar={}
print=(dictvar)
res={}

正常字典:
dictvar={“top”:“程咬金”,“middle”:“安其拉”,“bottom”:“后裔”}

获取字典里面的值:
res=dictvar[“top”]
print(res) 结果是程咬金

修改字典的值:
dictvar[“top”]=“李白”
print(dictvar)
res={“top”:“李白”,“middle”:“安其拉”,“bottom”:“后裔”}

字典的键和集合的值有数据类型上的要求
什么类型才可以:不可变数据(可哈希的数据类型)
Number(int,float,bool,complex),str,tuple
不允许的类型:可变数据(不可哈希的数据类型)
list,set,dict

哈希(hashable):一种算法.
1:但凡提到哈希算法,都是典型的无序特征.集合最底层也是运用哈希算法.
2:计算机在存数据的时候是随机散乱的存到内存里,为了保证内存空间不浪费,更加均匀的把数据分配到内存之中,底成算法运用了取余类似的算法,为了节省内存空间.

归纳总结
字符串,列表,元组,集合,字典特征:
字符串和元组可获取,不可修改,有序.
列表可获取,可修改,有序.
字典可获取,可修改,无序.
集合不可获取,不可修改,无序.

你可能感兴趣的:(变量,数据类型分类)