以下是可用运算符的快速概述:
-
+(加)- 添加两个对象
3 + 5输出8。'a' + 'b'输出'ab'。
-
-(减去)- 给另一个数字减去一个数字; 如果第一个操作数不存在则假定为零。
50 - 24输出26。
-
*(乘)- 给出两个数字的乘法或返回多次重复的字符串。
2 * 3输出6。'la' * 3输出'lalala'。
-
**(功率)- 将x返回到y的幂
3 ** 4输出81(即3 * 3 * 3 * 3)
-
/(划分)- 将x除以y
13 / 3输出4.333333333333333
-
//(分和楼)- 将x除以y并将答案向下舍入到最接近的整数值。请注意,如果其中一个值是浮点数,您将返回浮点数。
13 // 3输出4-13 // 3输出-59//1.81输出4.0
-
%(模)- 返回除法的余数
13 % 3输出1。-25.5 % 2.25输出1.5。
-
<<(左移)- 将数字位向左移动指定的位数。(每个数字在内存中用位或二进制数字表示,即0和1)
2 << 2输出8。2由10位表示。- 左移2位
1000表示小数8。
-
>>(右移)- 将数字的位向右移动指定的位数。
11 >> 1输出5。11以位表示1011,当右移1位时给出101小数5。
-
&(按位和)- 比特和数字
5 & 3输出1。
-
|(按位或)- 数字的按位OR
5 | 3输出7
-
^(按位异或)- 数字的按位异或
5 ^ 3输出6
-
~(逐位反转)- x的逐位反转是 - (x + 1)
~5输出-6。有关详细信息,请访问http://stackoverflow.com/a/11810203
-
<(小于)- 返回x是否小于y。所有比较运算符返回
True或False。请注意这些名称的大小写。 5 < 3给予False和3 < 5输出True。- 比较可以任意链接:
3 < 5 < 7输出True。
- 返回x是否小于y。所有比较运算符返回
-
>(大于)- 返回x是否大于y
5 > 3输出True。如果两个操作数都是数字,则首先将它们转换为通用类型。否则,它总是返回False。
-
<=(小于等于)- 返回x是否小于等于y
x = 3; y = 6; x <= y输出True
-
>=(大于等于)- 返回x是否大于或等于y
x = 4; y = 3; x >= 3输出True
-
==(等于)- 比较对象是否相等
x = 2; y = 2; x == y输出Truex = 'str'; y = 'stR'; x == y输出Falsex = 'str'; y = 'str'; x == y输出True
-
!=(不等于)- 比较对象是否不相等
x = 2; y = 3; x != y输出True
-
not(布尔NOT 相当于java中的 ! 符号)- 如果是
True,则返回False。如果是False,则返回True。 x = True; not x回报False。
- 如果是
-
and(布尔AND 相当于java中的 && 符号)x = False; y = True; x and y返回,False因为x为False。在这种情况下,Python不会评估y,因为它知道'和'表达式的左侧是False暗示整个表达式False与其他值无关。这称为短路评估。- 两个值都为True才返回True,有一个False则返回False
-
or(布尔OR 相当于java中的 || 符号)x = True; y = False; x or y回报True。短路评估也适用于此。- 有一个为True则返回True
数学运算和赋值的快捷方式
通常对变量运行数学运算,然后将运算结果赋给变量,因此这些表达式有一个快捷方式:
a = 2
a = a * 3
可以写成:
a = 2
a *= 3
注意var = var operation expression成为var operation= expression。
评估订单
如果你有一个表达式,例如2 + 3 * 4,是先添加还是乘法?我们的高中数学告诉我们应该首先进行乘法运算。这意味着乘法运算符的优先级高于加法运算符。
下表给出了Python的优先级表,从最低优先级(最小绑定)到最高优先级(大多数绑定)。这意味着在给定的表达式中,Python将首先在表中较高的值之前评估表中较低的运算符和表达式。
下面的表格取自Python参考手册,是为了完整起见。最好使用括号来适当地对运算符和操作数进行分组,以便明确指定优先级。这使程序更具可读性。有关详细信息,请参阅下面的更改评估顺序。
lambda:Lambda表达式if - else:条件表达式or:布尔ORand:布尔ANDnot x:布尔NOTin, not in, is, is not, <, <=, >, >=, !=, ==:比较,包括成员资格测试和身份测试|:按位OR^:按位异或&:按位AND<<, >>: 位移+, -: 加减*, /, //, %:乘法,除法,分区和取模+x, -x, ~x:正,负,按位NOT**:指数x[index], x[index:index], x(arguments...), x.attribute:订阅,切片,调用,属性引用(expressions...), [expressions...], {key: value...}, {expressions...}:绑定或元组显示,列表显示,字典显示,设置显示
改变评估顺序
为了使表达式更具可读性,我们可以使用括号。例如,2 + (3 * 4)肯定更容易理解,而不2 + 3 * 4需要了解运算符优先级。与其他所有内容一样,括号应合理使用(不要过度使用),不应多余,如同(2 + (3 * 4))。
使用括号还有一个额外的好处 - 它有助于我们改变评估的顺序。例如,如果您希望在表达式中的乘法之前计算加法,那么您可以编写类似的内容(2 + 3) * 4。
关联性
操作员通常从左到右关联。这意味着具有相同优先级的运算符以从左到右的方式进行计算。例如,2 + 3 + 4被评估为(2 + 3) + 4。
表达式
示例(另存为expression.py):
length = 5
breadth = 2
area = length * breadth
print('Area is', area)
print('Perimeter is', 2 * (length + breadth))
输出:
$ python expression.py
Area is 10
Perimeter is 14
这个怎么运作
矩形的长度和宽度以相同的名称存储在变量中。我们使用这些来借助表达式计算矩形的面积和周长。我们将表达式的结果存储length * breadth在变量中area,然后使用该print函数进行打印。在第二种情况下,我们直接2 * (length + breadth)在print函数中使用表达式的值。
另外,请注意Python如何打印输出。即使我们没有'Area is'在变量和变量之间指定空格area,Python 也会为我们提供一个干净的输出,并且程序更加可读(因为我们不需要担心字符串中的间距)用于输出)。这是Python如何让程序员轻松生活的一个例子。
本文全面介绍了Python中的各种运算符,包括算术运算符、比较运算符、逻辑运算符和位运算符,解释了它们的功能和用法,以及运算符的优先级和结合性,帮助读者深入理解Python的表达式计算规则。
665





