山地人

Python 运算符

山地人
山地人
2021-07-02

这一篇我们会学习:

  1. 什么是运算符?
  2. 算术运算符
  3. 比较运算符
  4. 逻辑运算符
  5. 位运算符
  6. 赋值运算符
  7. 特殊运算符
  8. 成员运算符

什么是运算符?

Python的运算符是一些用来进行算术运算或者逻辑运算的特殊符号。和运算符一起参与运算的值被称为操作数

比如:

3 + 5

这里的35就是操作数+算术运算符

点击运行,启动下面的终端,你会看到运行结果为8,这就是运算后的输出

你可以在终端中尝试下其他运算+ - * / %

算术运算符

算术运算符就是被用来进行算术运算的操作符,比如:加法、减法、乘法、除法…

运算符名称说明例子
+加法运算符对两个操作数进行加法运算3 + 8
+正号运算符表示一个数是正数+7
-减法运算符对两个操作数进行减法运算12 - 8
-负号运算符表示一个数是负数-5
*乘法运算符对两个操作数进行乘法运算3 * 6
/除法运算符对两个操作数进行除法运算8 / 4
%取余运算符计算两个操作数相除后的余数10 % 3
//地板除运算符(向下取整除)计算两个操作数相除的向下取整值10 // 3
**取余运算符计算两个操作数相除后的余数2 ** 3

启动终端,试试上面表格中的每种运算符。

比较运算符

比较运算符用于比较值的大小关系,根据比较的结果返回True或者False。比较结果成立返回True,不成立返回False

运算符名称说明例子
>大于号运算符左侧值大于右侧值为True否则False8 > 5
<小于号运算符左侧值小于右侧值为True否则False8 < 5
==等于号运算符左侧值等于右侧值为True否则False8 == 5
!=不等号运算符左侧值不等于右侧值为True否则False8 != 5
>=大于或等于号运算符左侧值大于或等于右侧值为True否则False8 >= 5
<=小于或等于号运算符左侧值小于或等于右侧值为True否则False8 <= 5

启动沙盒,然后点击运行按钮,观察运行结果是否符合预期。

修改ab的值,观察允许结果变化。

逻辑运算符

逻辑运算符有三个且 and或 or非 not

运算符名称解释
and只有所有条件都为True,结果才为True,否则结果为False
or只要有一个条件为True时,结果就为True,否则结果为False
not当条件为True时,not TrueFalse,否则为True

运行下面的沙盒,观察结果。

  1. b的值改为 True,看看结果如何变化。
  2. ab的值都改为 False,再看看结果如何变化。

位运算符

对操作数中的每一个二进制位进行的运算操作,被称为位运算

运算符名称解释
&位与操作数两侧对应二进制位都为1时,此二进制位为1,否则为0
位或
~位非操作数对应二进制位为1时,此二进制位为0,否则为1
^位异或操作数两侧对应二进制位不同是,此二进制位为1,否则为0
>>按位右移将操作数的每一位的往右移动n次,高位用符号位的值补齐
<<按位左移将操作数的每一位的往左移动n次,低位用0补齐

赋值运算符

赋值运算符是用来对变量进行赋值而使用的运算符。

x = 15

这里把15这个值赋值给=左侧的x,这里的=就是一种简单的赋值运算符。

x = x + 20

上面的表达式是把x + 20计算后得到的结果再次赋值给x。 对于这种x = x + b的形式,可以用一种简写方式x+=b进行等效替换。

# 等价于 x = x + 20
x += 20

这就是复合赋值运算符

运算符举例等价于
=x = 2x = 2
+=x += 2x = x + 2
-=x -= 2x = x - 2
*=x *= 2x = x * 2
/=x /= 2x = x / 2
%=x %= 2x = x % 2
//=x //= 2x = x / 2
**=x **= 2x = x ** 2
&=x &= 2x = x & 2
|=x |= 2x = x | 2
^=x ^= 2x = x ^ 2
>>=x >>= 2x = x >> 2
<<=x <<= 2x = x << 2

运行下面沙盒,将+=换成其他赋值运算符试试。

特殊操作符

除了上面的这些常规运算符,Python还提供了一些特别的运算符:

  1. 标识运算符
  2. 成员运算符

这些特殊的运算符为简化特定问题代码的编写提供了便捷。

标识运算符

标识运算符是用来检测变量所对应的值是否是内存里的同一块区域。好比有些人有真名还有网名。这两个名字所对应的是同一个人。识别变量是否指向同一块内存区域就是标识运算符要干的事。 Python中的标识运算符有两个:isis not

运算符含义例子
is如果操作数是指向同一块内存(指向相同的对象)则返回Truex is y
is not如果操作数不指向同一块内存(指向相同的对象)则返回Truex is not y

要注意,并不是值相同的变量,就一定是指向了同一个对象。

运行下面的例子,想一想为何结果是这样?

  • 上面的xy是两个数组,在Python中创建的两个数组是两个不同的对象。即便他们内部的每个元素都相同。
  • 对于数字 Number字符串 String布尔 Boolean这些类型,如果他们所对应的变量的值相同,则指向同一块内存。

成员运算符

成员运算符可以用来检测目标对象中是否包含指定成员。

key in target
key not in target
  • key是要检测的字段
  • target是要检测的目标对象
  • innot in是成员运算符

对于不同的数据类型,检测的内容是不同的。

  • 对于字符串类型,检测字符串中是否包含要检测的值
  • 对于数组类型,检测数组的成员中是否包含要检测的值
  • 对于字典类型,检测字典的键中是否包含要检测的值

至此,本篇教程也到了该和你说再见的时候了,我们下期再见。

学完本篇互动教程,如果你觉得体验不错,可以把网页链接发送给你的小伙伴,让他/她也来感受一下。当然,你也可以继续看看网站上其他的的互动教程,希望`idev365`能够给你带来收获。

学习教程的过程中碰到了问题,或者对idev365有什么改进意见和想法,欢迎加入idev365微信内测群,和山地人交流你的想法。