上一章讲解过了组合数据类型,本章进行变量以及各种编程需要的运算符的操作讲解
3.3 变量部分
3.4 运算符部分;主要讲解:赋值运算符、算数运算符、关系运算符、逻辑运算符、成员运算符、标识运算符
3.3. 变量
变量就是用来临时存放数据的一个容器
3.3.1 变量的使用
python中的变量,不需要声明即可使用
python中的变量命名:驼峰命名法,见名知意,只能是字母、数字和下划线组成,变量第一个字符智能是字母或者下划线
stockCount = 12; # 意义:库存数量 12
price = 499.00; # 意义:单价为499.00
_pi = 3.1415; # 意义:定义了圆周率pi为3.1415
$name = 'jerry' # 错误:变量中不能包含$符号
3.3.2 变量的回收
变量一旦定义,在程序中也是使用内存空间来存储数据的,所以当变量一旦不在需要使用,需要删除变量释放它占用的内存空间,python中通过del关键字来删除变量
stockCount = 12; # 使用库存变量
del stockCount; # 删除变量stockCoutn
print (stockCount) # 报错,stockCount变量未定义
这里一定要注意,在Python中,认为一切都是对象,所以变量进行赋值时,其实就是python在内存中创建了这个对象,然后将对象在内存中的地址存储在变量中了。
count = 100; # 内存中创建了一个对象,对象的数据是100 id(count); 结果:1867079904 # 表示count中存放的内存地址 count = 200; # 内存中创建了一个对象200 id(count) 结果:1867560352 # 表示此时count中存放的内存地址
注意1:python将所有的数据都存储为内存对象,变量其实就是指向对象的一个引用,只要需要,就可以让变量随时引用一个不同的对象
注意2:python内置了函数type(),用于检测给定数据的数据类型
注意3:使用赋值符=等号,用来将一个变量和内存中的对象绑定起来,如果对象在内存中存在就直接绑定,否则赋值运算符后面的对象会被即时创建之后进行绑定。
那就存在问题了,创建的100和200这两个数据,内存中进行了什么样的处理的呢?
python将这样没有引用变量指向的对象,回收到了对象缓冲池(PS:对象缓冲池也是内存中的一个区域),方便下次使用的时候直接获取,所以在使用python的时候,一定要注意内存泄漏的问题。关于python内存管理这一部分,后续会单独进行讲解
3.3.3. 变量的命名规则
- 只能包含字母、数字、下划线,且不能以数字开头
- 变量名称区分大小写,name和Name就是两个不同的变量
- 禁止使用python2和python3的保留字
3.3.4. 特殊变量
以一个下划线开头的变量名称,不会被import语句导入
前后各有下划线的变量名,是系统定义的变量名,有特殊含义
交互模式下,单个下划线中保存了最后的输出表达式的结果
3.3.5. 特殊用法:变量的交叉赋值
可以通过同时定义多个变量同时赋值的方式简化赋值操作
a, b = 11, 12
相当于a = 11, b = 12
的操作方式
3.4.操作符
操作符,就是用于进行数据运算的符号
常见的操作符一般有赋值运算符、算数运算符、逻辑运算符、关系运算符等等
3.4.1. 赋值运算符
运算符 | 描述 | 使用方式 |
---|---|---|
= | 直接赋值 | a = 2 给a赋值数据2 |
+= | 加法赋值运算 | a += 2 a原来的数据加2再赋值给a |
-= | 减法赋值运算 | a-=2 a原来的数据减去2再赋值给a |
*= | 乘法赋值运算 | a*=2 a原来的数据乘以2再赋值给a |
/= | 除法赋值运算 | a/=2 a原来的数据除以2再赋值给a |
%= | 取余赋值运算 | a%=2 a原来的数据除以2,将余数赋值给a |
**= | 次方赋值运算 | a**=2 将a原来的数据取2次方运算再赋值给a |
//= | 地板除法运算 | a//=3 将a原来的数据地板除以3将结果赋值给a |
3.4.2. 算数运算符
运算符 | 描述 | 使用方式 |
---|---|---|
+ | 加法运算 | 1 + 2 结果 3 |
- | 减法运算 | 1 - 1 结果 0 |
* | 乘法运算 | 12 * 12 结果 144 |
/ | 除法运算 | 10 / 3 结果 3.333333 |
% | 取余运算 | 10 / 3 结果 1 |
** | 次方运算 | 10 ** 2 结果 100 |
// | 地板除法运算 | 10 // 3 结果 3 |
注意
在Python2中,除法运算和地板除法运算是一个结果
在python3中,除法运算和地板除法运算结果不一样
3.4.3. 关系运算符
关系运算符,通过比较运算符两边的数据,返回一个布尔类型的结果
运算符 | 描述 | 使用方式 |
---|---|---|
> | 大于运算 | 1> 2 结果 False |
< | 小于运算 | 1 < 2 结果 True |
>= | 大于等于运算 | 12 >= 12 结果True |
<= | 小于等于运算 | 12 <= 11 结果 False |
<> | 不等于运算 | 10 <> 3 结果 True |
!= | 不等于运算 | 等同于<> ,如10 != 10,结果False |
== | 等于运算 | 10 == 3 结果 False |
3.4.4. 逻辑运算符
运算符 | 描述 | 使用方式 |
---|---|---|
and | 并且运算 | True and False 结果 False |
or | 或者运算 | True or False 结果 True |
not | 非运算 | not False 结果True |
注意
这里的逻辑运算符,python中只有and|or|not,在其他语言中,也有类似&&、||、!的符号来表示and、or、not的三种关系的
and/&&:并且运算,当运算符两边的数据都为True才返回True,否则返回False
or/||:或者运算,当运算符两边的数据都是False才返回False,否则返回True
not/!:非运算,对结果进行取反,如果为True结果为False,如果为False则结果为True
3.4.5. 成员运算符
成员运算符,主要用于判断某个成员是否出现在某个对象中 | 运算符 | 描述 | 使用方式 |
---|---|---|---|
in | 如果在指定的变量中找到则为True,否则为False | jiaoYue in heros | |
not in | 如果在指定的变量中没有找到返回True | jiaoYue not in heros |
实际操作如下
heros = ["皎月女神", "暴走萝莉", "机械先驱", "九尾妖狐"]
feiCi = "潮汐海灵";
jiaoYue = "皎月女神";
feiCi in heros;
结果:False
jiaoYue in heros;
结果:True
3.4.6. 标识运算符
标识运算符,主要用于两个不同的变量数据类型的检测 | 运算符 | 描述 | 使用方式 |
---|---|---|---|
is | 如果运算符两边的变量指向相同的对象则为True | a is b | |
is not | 如果运算符两边的变量指向不同的对象则为True | a is not b |
a = 12;
b = 12;
a is b
结果:True
a is not b
结果:False