一、什么是变量?
变量就是可以变化的量,量指的是事物的状态,比如人的年龄、性别,游戏角色的等级、金钱等等
二、为什么要有变量?
为了让计算机能够像人一样去记忆事物的某种状态,并且状态是可以发生变化的
详细地说:
程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或者说是保存下来程序执行时状态,以及状态的变化。
三、怎么使用变量
1.变量的基本使用
-
原则:先定义,后使用。
-
定义-->存
# 变量名 = 值 name ='David' sex = '男' age = 18 salary = 30000.0 print(name)
2. 内存管理
-
垃圾:当一个变量值被绑定的变量名的个数为0时,该变量值无法被访问到,称之为垃圾。
-
引用计数增加:
x = 10 # 10的引用计数为1 y = x # 10的引用计数为2 z = x # 10的引用计数为3
-
引用计算减少:
del x # 解除变量名x与值10的绑定关系,10的引用计数变为2 del y # 10的引用计数为1 z = 123456 # 10的引用计数变为0
3. 变量的三大组成部分
-
变量名:
name = -->是指向等号右侧值得内存地址,用来访问等候右侧的值。
-
赋值符号(=):将变量值内存地址绑定给变量名。
-
变量值:代表记录的事物状态
4. 变量名的命名规则
-
原则:变量名的命名,应该见名知意。
-
变量名的一个字母不能是数字。
-
关键字不能声明为变量名,常用关键字如下:
'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:不要用拼音,或者中文,在见名知意的前提下尽可能短。
# 避免 mingzi ='David' 名字 = 'David'
5. 变量名的命名风格
-
纯小写加下划线(在python中,关于变量名的命名推荐使用这种方式)
age_of_alex = 73 print(age_of_alex)
-
驼峰体
AgeOfAlex = 73 print(AgeOfAlex)
6. 变量值三个重要特性
name = 'David'
-
id:反应的是变量值得内存地址,内存地址不同,id不同。
print(id(name)) # 2108358068016
-
type:不通用类型的值用来表示记录不同状态
print(type(name)) # <class 'str'>
-
value:值本身
print(name)
-
is 与 == 的区别
-
is:比较左右两个身份id是否相等。
-
== :比较左右两个值,他们的值是否相等。
# 值相等,id可能不同,既两块不同的内存空间可以存相同的值。 >>> x = 'David' >>> y = 'David' >>> print(x,y) # David David >>> print(id(x),id(y)) 2039252780656 2039252779696 >>> x == y True >>> x is y False
-
小整数池[-5~256] (了解)
从python解释器启动那一刻开始,就会在内存中事先申请好一系列内存在空间存放好常用的整数。
""" >>> m=10 >>> n=10 >>> id(m) 2721204339216 >>> id(n) 2721204339216 >>> res=4+6 >>> res 10 >>> id(res) 2721204339216 """ """ >>> x=-6 >>> y=-6 >>> x is y False """ """ >>> x="aaa" >>> y="aaa" >>> x is y True """
7. 常量
注意:python语法中没有常量的概念,但是在程序开发过程中会涉及到常量的概念。
AGE_OF_ALEX=73 # 全为大写代表常量,这只是一种约定、规范
8. 数据类型
8.1 整形 int
-
作用:记录年龄、身份证、个数等等。
-
定义:
age = 18 print(type(age))
8.2 浮点型 float
-
作用:记录带小数的数值,如身高、体重等等。
-
定义:
heiht = 3.3 weigh = 70.3 print(heigh)
ps:int 与 float之间可以相加
8.3 字符串类型 str
-
作用:记录描述性质的状态,如名字、一段话
-
定义:用引号('',"",'''''',"""""")包含的一串字符。
info = ''' 天下只有两种人。比如一串葡萄到手,一种人挑最好的先吃, 另一种人把最好的留到最后吃。 照例第一种人应该乐观,因为他每吃一颗都是吃剩的葡萄里最好的; 第二种人应该悲观,因为他每吃一颗都是吃剩的葡萄里最坏的。 不过事实却适得其反,缘故是第二种人还有希望,第一种人只有回忆。 ''' print(type(info)) name = "David" print(type(x)) x = '18' # 由数字组成的字符串,是字符串类型,不是int类型 print(type()) 'name' 'Daivd' # 语法错误,等号左边是变量名,变量名的命名不能有号。 xxx # 代表访问变量名字 'xxx' # 代表值
-
其他使用
-
字符串的嵌套,注意:外层用单引号,内层应该用双引号,反之亦然。
print('my name is "David"') print('my name is \'David\'')
-
字符串之间可以相加,但仅限于str与str之间进行,了解即可,不推荐使用,因为str之间相加的效率极低。
print('my name is' + 'David') print('#' * 20)
-
8.4 列表 list
索引对应值,索引从0开始,0代表第一个。
-
作用:按位置记录多个值(同一个人的多个爱好,同一个班级的所有学生姓名,同一个人的12个月的薪资),并且按照索引取指定位置的值。
-
定义:在
[]
内用逗号分割开多个任意类型的值,一个值称之为一个元素。# 0 1 2 3 4 l = [10, 3.1, 'aaa', ['bbb', 'ccc'], 'ddd'] # -5 -4 -3 -2 -1 print(l) print(l[2]) print(l[3][1]) print(l[-1]) hobbies = ['read','music','play'] print(hasattr[1])
-
其他的用途:
students_info=[ ['tony',18,['jack',]], ['jason',18,['play','sleep']] ] # 取出第一个学生的第一个爱好 print(students[0][2][0])
8.5 字典 dict
key对应值,其中key通常为字符串类型,所以key对值可以有描述性作用。
-
作用:用来存多个值,每个值都有唯一一个key与其对应,key对值有描述性功能。
-
定义:在
{}
内用逗号分割开多个key:value。d = {"a": 1 , "b": 2} print(type(d)) info = { "name": 'David', "age": 18, "gender": "male", "salary": 19 } print(info['salary'])
-
其他用途
students_info=[ {"name":"David","age1":19,"gender":"male"}, {"name":"David","age1":19,"gender":"male"}, {"name":"David","age1":19,"gender":"male"}, ] print(students_info[1]["gender"])
8.6 布尔类型
-
作用:用来记录真假两种状态
-
定义
is_ok = True is_ok = False
-
其他使用
通常用来当作判断的条件,我们将在if判断中用到它。