01 变量、基本数据类型
变量,基本数据类型
变量
-
什么是变量?
- 量指的是事物的状态,变指的是事物的状态是可以变化的,变量指的是可以将事物的状态给记录下来,并且记录的结果是可以被改变的
- 变量是一种存取内存的机制
-
为什么要有变量?
- 为了让计算机能够像人一样记住事物的状态,并且状态是可以发生变化的
详细地说:
程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或者说是保存下来程序执行时状态,以及状态的变化。
-
变量的定义与使用
- 先定义后引用
定义
name = "mike" # 名字
age = 18 # 年龄
height = 1.8 # 身高
weight = 80 # 体重
三大组成部分:
- 变量名:用来找值
- 赋值符号: 将变量值的内存地址绑定给变量名
- 变量值:就是我们存储的数据,或者说记录的事物的状态
引用
print(age) # 打印
变量名
命名的大前提:变量名的命名应该见名知意
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
变量值
1、变量值的三大特征
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相同,意味着tye和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
>>>
2、小整数池 [-5,256]
从python解释器启动那一刻开始,就会在内存中事先申请
好一系列内存空间存放好常用的整数
x=111111111111111
y=111111111111111
print(id(x))
print(id(y))
3、内存管理:垃圾回收机制gc
垃圾:当一个变量值被绑定的变量名的个数为0时,该变量值无法被访问到,称之为垃圾(用来回收没有关联任何变量名的值)
核心原理:引用计数
分代回收:提升效率
标记清除:循环引用导致内存泄露问题???
# 引用计数增加
x = 100 # 100的引用计数为1
y = x # 100的引用计数为2
z = x # 100的引用计数为3
# 引用计数减少
del x # 解除变量名x与值100的绑定关系,100的引用计数变为2
print(y)
del y # 100的引用计数变为1
print(z)
z = 12345 # # 100的引用计数变为0
print(z)
常量
常量即指不变的量,如pai 3.141592653..., 或在程序运行过程中不会改变的量
AGE = 18
AGE = 19
print(AGE)
const age int = 18
age = 19
基本数据类型
1、整型int
-
作用:用来记录年龄、个数、号码、等整数相关的状态
age = 18
2、浮点型float
- 作用:用来记录身高、体重、薪资等小数相关的状态
weight = 80.3
3、字符串类型str
- 作用:用来记录姓名,性别,国籍,家庭住址,等描述性质的状态
msg1 = "鲁迅说:今天天气很好"
msg2 = '鲁迅说:今天天气很好'
msg3 = """鲁迅说:今天天气很好"""
msg4 = '''
鲁迅说:今天天气很好
鲁迅说:今天天气很好
鲁迅说:今天天气很好
鲁迅说:今天天气很好
'''
msg5 = "'鲁迅说':今天天气很好"
print(type(msg5))
print(msg5)
gender = "male"
country = "china"
name="mike"
4、列表类型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])
5、字典类型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 = "mike"
age = 18
gender = "male"
level = 19
# 0 1 2 3
info = ["mike", 18, "male",19]
print(info[1])
info = {
"name": "mike",
"age": 18,
"gender": "male",
"level": 19
}
print(info["age"])
# 案例:存放多个同学的信息
students = [
{"name":"mike",'age':18,"gender":"male"},
{"name":"tom",'age':19,"gender":"male"},
{"name":"lili",'age':28,"gender":"female"},
]
print(students[1]['age'])
6、布尔类型bool
- 作用:用来记录真假两种状态
x = True
x = False
print(type(x))
print(10 == 10)
print(10 > 3)
name = "tom"
print(name == "mike")
从来就没有正确的选择,我们只不过是要努力奋斗,使当初的选择变得正确。