[变量,基本数据类型]
[变量、基本数据类型、]
[变量、基本数据类型、]
1、变量
- 什么是变量?
量指的是事物的状态,变指的是事物的状态是可以变化的,变量指的是可以将事物的状态给记录下来,并且记录的结果是可以被改变的
变量是一种存取内存的机制
- 为什么要有变量?
为了让计算机能够像人一样记住事物的状态,并且状态是可以发生变化的
详细地说:
程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或者说是保存下来程序执行时状态,以及状态的变化。
-
变量的 定义与使用
先定义后引用
(1)定义变量
name = "egon" # 名字
age = 18 # 年龄
height = 1.8 # 身高
weight = 80 # 体重
三大组成部分:
变量名:用来找值
赋值符号:将变量值的内存地址绑定给变量名
变量值:就是我们存储的数据,或者说记录的事物的状态
(2)变量的引用
print(age) # 打印
2、变量名
-
命名的大前提:变量的命名应该见名如意
age = 18 # 年龄 level = 18 # 等级 count = 18 # 数量 -
命名的规范
是由字母、数字、下划线组成
不能以数字开头
不能用python的关键字
# 例:
level_of_age = 18
_=19
print(_)
- Python关键字:
'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'
定义变量名不好的方式
变量名为中文、拼音
变量名过长
变量名词不达意
- 命名风格
#1.驼峰体(单词首字母大写其余字母小写组成的命名)
LevelOfAge = 18
NumberOfStudents = 80
# 2.纯小写加下划线 (Python推荐风格)
level_of_age = 18
number_of_students = 80
3、变量值
-
变量值的三大特征
name='geng' # id: 反映的是变量值的内存地址,内存地址不同id肯定不同 print(id(name)) # type:变量值的类型 print(type(name)) # value:变量值(值本身) print(name) age = 18 salary = 3.3 res = age + 1 print(res) # =============》类型/; print(type(age)) print(type(salary)) # =============》id:就是值在内存中的身份证号,id反映的就是内存 print(id(age)) print(id(salary))is 与 = =
is:判断的是左右两个值身份ID是否相等
==:判断的是左右两个值是否相等
注意:
(1)如果ID相同,意味着type和value必定相同
x = 1000 y = x print(x is y)(2)value相同type肯定相同,但ID可能不同
C:\Users\oldboy>python3 Python 3.8.6 (tags/v3.8.6:db45529, Sep 23 2020, 15:52:53) [MSC v.1927 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> x=1000 >> y=1000 >>> id(x)x 2577369562032 >>> id(y) 2577369562096 >>> >>> x is y False >>> x == y True >>>- 小数整除
从python解释器启动那一刻开始,就会在内存中事先申请
好一系列内存空间存放好常用的整数
x=111111111111111 y=111111111111111 print(id(x)) print(id(y))-
内存管理:垃圾回收机制过程
垃圾:当一个变量值被绑定的变量名的个数为0时,该变量值无法被访问到,称之为垃圾(用来回收没有关联任何变量名的值)
核心原理:引用计数
分代回收:提升效率
标记清除:循环引用导致内存泄露问题
标记/清除算法的核心:
如果一个值没有关联任何一条以直接引用作为出发点的引用,那么该值就会被标记下来,并且清除如果一个变量值不存在任何以栈区为出发点的引用,那么标记/清除算法就认为它是垃圾
# 引用计数增加 x = 100 # 100的引用计数为1 y = x # 100的引用计数为2 z = x # 100的引用计数为3 # 引用计数减少 el x # 解除变量名x与值100的绑定关系,100的引用计数变为2 print(y) del y # 100的引用计数变为1 print(z) z = 12345 # # 100的引用计数变为0 print(z)
小整数池:
将常用整数写入常驻内存,方便调用 0 - 255
例如:
x = 100
y = 100
ID(x)== ID(y)
结果True
4、常量
常量即指不变的量,如pai 3.141592653..., 或在程序运行过程中不会改变的量
AGE = 18
AGE = 19
print(AGE)
const age int = 18
age = 19
基本数据类型
一、什么是数据?
x=10,10是我们要存储的数据
二、为何数据要分不同的类型
数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示
三、 数据类型
- 整型int
作用:用来记录年龄、个数、号码、等整数相关的状态
age = 18
- 浮点型float
作用:用来记录身高、体重、薪资等小数相关的状态
weight = 80.3
- 字符串str
作用:用来记录姓名,性别,国籍,家庭住址,等描述性质的状态
- 列表list:[]内用逗号分隔开多个任意类型的元素
作用:专门用来记录多个同种属性的值(比如同一个班级多个学生 的姓名、同一个人的多个爱好等),并且存取都十分方便
# 0 1 2 3
l = [111, 3.3, [666, 777, 88], "abc"]
print(l[0])
print(l[1])
print(l[2])
print(l[-1])
print(l[2][0])
hobbies = ["read", "music", "movie", "play"]
print(hobbies[1])
- 字典dict:{ }用逗号分隔开多个元素,每一个元素的组成都是key:value,其中value可以是任意类型,而key通常是字符串类型
作用:按照key存放多个值,key反映的value的属性
d = {"k1":111,"k2":1.3,"k3":"abcdef","k4":[111,222,333],"k5":# # {"a":1,"b":2}}
print(d["k3"])
print(d["k4"][1])
print(d["k5"]["a"])
name = "egon"
age = 18
gender = "male"
level = 19
# 0 1 2 3
info = ["egon", 18, "male",19]
print(info[1])
info = {
"name": "egon",
"age": 18,
"gender": "male",
"level": 19
}
print(info["age"])
# 案例:存放多个同学的信息
students = [
{"name":"egon",'age':18,"gender":"male"},
{"name":"tom",'age':19,"gender":"male"},
{"name":"lili",'age':28,"gender":"female"},
]
print(students[1]['age'])
-
布尔类型bool
作用:用来记录真假两种状态
x = True x = False print(type(x)) print(10 == 10) print(10 > 3) name = "tom" print(name == "egon")

浙公网安备 33010602011771号