- 赋值运算符及内存分析
- 算数运算符
- 关系运算符
- 逻辑运算符
一、赋值运算符及内存分析
引用概念
在 Python中
- 变量 和 数据 是分开储存的
- 数据 保存在内存的一个位置
- 变量 中保存着数据在内存中的地址
- 变量 中 记录数据的地址,就叫做 引用
- 使用 id( ) 函数可以产看变量中保存数据所在的 内存地址
注意:如果变量已经被定义,当给一个变量赋值的时候,本质上是 修改了数据的引用
- 变量 不再 对之前的数据引用
- 变量 改为 对新赋值的数据引用
Id()
>>> help(id)
Help on built-in function id in module builtins:
id(obj, /)
Return the identity of an object.
返回一个 对象的 标识(存在内存中的多少号)
This is guaranteed to be unique among simultaneously existing objects.
(CPython uses the object's memory address.)
在同时存在的对象中必然是唯一的。
执行如下语句:
name2 = name
使用id函数查看变量 name2 和name的地址/引用是否一致?
结果也是一致的,说明在python中,一个地址复用次数多,这样可以节约内存,避免内存浪费。
对name1进行重新赋值:
Name1 = "admin1"
Name 和name1还是同一个地址吗?
所谓赋值,就是内存中变量名指向的改变,重新赋值,变量就指向了新的地址
扩展赋值运算符
赋值运算符 | 说 明 | 举 例 | 展开形式 |
= | 最基本的赋值运算 | x = y | x = y |
+= | 加赋值 | x += y | x = x + y |
-= | 减赋值 | x -= y | x = x - y |
*= | 乘赋值 | x *= y | x = x * y |
/= | 除赋值 | x /= y | x = x / y |
%= | 取余数赋值 | x %= y | x = x % y |
**= | 幂赋值 | x **= y | x = x ** y |
//= | 取整数赋值 | x //= y | x = x // y |
演练并分析数据赋值的过程
注:扩展赋值运算符 -= 、 *= /= 只适用于数学运算上,不能进行字符串的拼接
二、算术运算符
算数运算符
算数运算符是运算符的一种
是完成基本的算术运算使用的符号,用来处理四则运算
运算符 | 描述 | 实例 |
+ | 加 - 两个对象相加 | a + b 输出结果 30 |
- | 减 - 得到负数或是一个数减去另一个数 | a - b 输出结果 -10 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 200 |
/ | 除 - x除以y | b / a 输出结果 2 |
% | 取模 - 返回除法的余数 | b % a 输出结果 0 |
** | 幂 - 返回x的y次幂 | a**b 为10的20次方, 输出结果 100000000000000000000 |
// | 取整除 - 返回商的整数部分(向下取整) | >>> 9//2 4 >>> -9//2 -5 |
算数运算符的优先级
和数学中的运算符的优先级一致,在Python中进行数学计算时,同样也是:
- 先乘除后加减
- 同级运算符是从左至右计算
- 可以使用( )调整计算的优先级,有括号的先算括号里面的
以下表格的算数优先级由高到最低顺序排列
运算符 | 描述 |
** | 幂(最高优先级) |
* / % // | 乘、除、取余数、取整数 |
+ - | 加法、减法 |
三、关系运算符
关系运算符/比较运算符
运算符 | 描述 | 实例 |
== | 等于 - 比较对象的值是否相等 | (a == b) 返回 False。 |
!= | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 true. |
<> | 不等于 - 比较两个对象是否不相等。python3 已废弃。 | (a <> b) 返回 true。这个运算符类似 != 。 |
> | 大于 - 返回x是否大于y | (a > b) 返回 False。 |
< | 小于 - 返回x是否小于y。 | (a < b) 返回 true。 |
>= | 大于等于 - 返回x是否大于等于y。 | (a >= b) 返回 False。 |
<= | 小于等于 - 返回x是否小于等于y。 | (a <= b) 返回 true。 |
所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。
比较大小
== 或者 != 用于比较变量的值是否相同,区别于变量的id是否相同
is用户地址比较
is是身份运算符,用来比较两个变量的引用的id是否一致
四、逻辑运算符
逻辑运算符
运算符 | 逻辑表达式 | 描述 | 实例 |
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20。 |
or | x or y | 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
And
条件1 and 条件2
- 与 / 并且
- 两个条件同时满足,返回 True
- 只要有一个条件不满足,就返回 False
条件1 | 条件2 | 结果 |
成立 | 成立 | 成立 |
成立 | 不成立 | 不成立 |
不成立 | 成立 | 不成立 |
不成立 | 不成立 | 不成立 |
OR
条件1 or 条件2
- 或 / 或者
- 两个条件只要有一个满足,返回 True
- 两个条件都不满足,返回 False
条件1 | 条件2 | 结果 |
成立 | 成立 | 成立 |
成立 | 不成立 | 成立 |
不成立 | 成立 | 成立 |
不成立 | 不成立 | 不成立 |
NOT
not条件
- 非、不是
条件 | 结果 |
成立 | 不成立 |
不成立 | 成立 |
逻辑与练习:
三目运算符
三目运算符,又称条件运算符。它是唯一有3个操作数的运算符,有时又称为三元运算符
Python中三目运算符的格式:
结果1 if 表达式 else 结果2
表达式有两个结果 要看一下表达式的值是真还是假,如果是真,返回前面的结果,如果是假,则返回后面的结果
三目运算符练习: