变量与基本数据类型
Posted python-htl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量与基本数据类型相关的知识,希望对你有一定的参考价值。
一、变量
1、定义:变量就是可以变化的量,实际指代的是内存中的一段空间,量指的是事物的状态,比如人的年龄、性别,游戏角色的等级、金钱等等。
2、目的:变量的存在是为了让计算机能够像人一样去记忆事物的某种状态,并且状态是可以发生变化的。
详细地说:
程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或者说是保存下来程序执行时状态,以及状态的变化。
二、如何用变量
1、变量基本使用
原则:先定义,后引用
name = ‘egon‘ # 定义-》存
print(name) # 引用-》取
2、变量有三大组成部分
(1)变量名:是指向等号右侧值的内存地址的,用来访问等号右侧的值。
(2)赋值符号:将变量值的内存地址绑定给变量名
(3)变量值:代表记录的事物的状态
变量名与值内存地址的关联关系存放于栈区。
变量值存放于堆区,内存管理回收的则是堆区的内容。
3、内存管理:垃圾回收机制
垃圾:当一个变量值被绑定的变量名的个数为0时,该变量值无法被访问到,称之为垃圾。
垃圾回收机制(GC):是python解释器自带一种机制,专门用来回收不可用的变量值所占用的内存空间。
(1)引用计数:变量值被变量名关联的次数。
直接引用:指的是从栈区直接出发引用到的内存地址。
间接引用:指的是从栈区出发引用到堆区后,再通过进一步引用到堆区后,再通过进一步引用才能到达的内存地址。
(2)标记清除:用来解决循环引用带来的内存泄漏问题。
(3)分代回收:用来降低引用计数的扫描频率,提升垃圾回收的效率。
分代:根据存活的时间来为变量划分不同等级。
回收:使用引用计数作为回收的依据。
4、变量名的命名的规则
原则:变量名的命名应该见名知意
(1)变量名只能是 字母、数字或下划线的任意组合
(2)变量名的第一个字符不能是数字
(3)关键字不能声明为变量名,常用关键字如下:
[‘and‘, ‘as‘, ‘assert‘, ‘break‘, ‘class‘, ‘continue‘, ‘def‘, ‘del‘, ‘elif‘, ‘else‘, ‘except‘, ‘exec‘, ‘finally‘, ‘for‘, ‘from‘,‘global‘, ‘if‘, ‘import‘, ‘in‘, ‘is‘, ‘lambda‘, ‘not‘, ‘or‘, ‘pass‘, ‘print‘, ‘raise‘, ‘return‘, ‘try‘, ‘while‘, ‘with‘, ‘yield‘]
ps:不要用拼音,不要用中文,在见名知意的前提下尽可能短
5、变量名的命名风格
(1)纯小写加下划线的方式(在python中,关于变量名的命名推荐使用这种方式),如age_of_alex = 73
(2)驼峰体,如AgeOfAlex = 73
6、变量值三个重要的特征
(1)id:反映的是变量值的内存地址,内存地址不同id则不同,如print(id(name))
(2)type:不同类型的值用来表示记录不同的状态,如print(type(name))
(3)value:值本身,如print(name)
7、身份运算符is与比较运算符==
(1)is:比较左右两个值身份id是否相等
(2)==:比较左右两个值他们的值是否相等
id不同的情况下,值有可能相同,即两块不同的内存空间里可以存相同的值。
id相同的情况下,值一定相同,x is y成立,x == y也必然成立。
了解:小整数池[-5,256]
从python解释器启动那一刻开始,就会在内存中事先申请
好一系列内存空间存放好常用的整数。
8、常量:不变的量
注意:python语法中没有常量的概念,但是在程序的开发过程中会涉及到常量的概念。
小写字母全为大写代表常量,这只是一种约定、规范。
AGE_OF_ALEX = 73
print(AGE_OF_ALEX)
三、基本数据类型
1、数字类型
(1)整型int
作用:记录年龄、身份证号、个数等等
定义:age = 18
print(type(age))
(2) 浮点型float
作用:记录薪资、身高、体重
定义salary = 3.3
height = 1.87
weight = 70.3
print(type(height))
(3)字符串类型str
作用:记录描述性质的状态,名字、一段话
定义:用引号(‘‘,"",‘‘‘ ‘‘‘,""" """,)包含的一串字符
x=‘18‘ #由数字组成的字符串,是字符串类型,不是int类型
‘name‘=‘egon‘ # 语法错误,等号左边是变量名,变量名的命名不能有引号
其他使用:字符串的嵌套,注意:外层用单引号,内层应该用双引号,反之亦然。
(4)列表:索引对应值,索引从0开始,0代表第一个,索引反映的是顺序、位置,对值没有描述性的功能。
作用:按位置记录多个值(同一个人的多个爱好、同一个班级的所有学校姓名、同一个人12个月的薪资),并且可以按照索引取指定位置的值。
定义:在[]内用逗号分隔开多个任意类型的值,一个值称之为一个元素。
其他的用途:
students_info=[
[‘tony‘,18,[‘jack‘,]],
[‘jason‘,18,[‘play‘,‘sleep‘]]
]
取出第一个学生的第一个爱:print(students_info[0][2][0])
(5)字典类型:key对应值,其中key通常为字符串类型,所以key对值可以有描述性的功能
作用:用来存多个值,每个值都有唯一一个key与其对应,key对值有描述性功能
定义:在{}内用逗号分开各多个key:value
info={
"name":‘egon‘,
"age":18,
"gender":‘male‘,
"salary":19
}
print(info["salary"])
(6)布尔bool
作用:用来记录真假这两种状态,通常用来当作判断的条件
定义:is_ok = True/is_ok = False
总结:如何选择合适的类型来记录状态
1、选取的类型是否可以明确标识事物的状态
2、存不是目的,存的目的是为了日后取出来用,并且方便的用
3、把自己想象成一台计算机,如果我是计算机,我会如何以何种形式把事物的状态记到脑子里,然后再去python中找相应的数据类型来让计算机像自己一样去记下事物的状态。
以上是关于变量与基本数据类型的主要内容,如果未能解决你的问题,请参考以下文章