Python中的运算符官方详解(附代码)

Operators

我们将简要介绍一下运算符及其用法。

请注意,您可以使用解释器交互式地计算示例中给出的表达式。例如,要测试表达式 2 + 3,请使用交互式 Python 解释器提示符:

2 + 3
5
3 * 5
15

以下是可用运算符的快速概述:

  • (plus)
    添加两个对象
    3 + 5 gives 8. ‘a’ + ‘b’ gives ‘ab’.
  • (minus) –
    给出一个数字与另一个数字的减法;如果第一个操作数不存在,则假定它为零。
    -5.2 表示负数,50 – 24 表示 26。
  • (multiply)
    给出两个数字的乘法或返回重复多次的字符串。
    2 * 3 得到 6。‘la’ * 3 给出 ‘lalala’。
  • ** (power)

    将 x 返回到 y 的幂
    3 ** 4 得到 81(即 3 * 3 * 3 * 3)

    / (divide)
    将 x 除以 y
    13 / 3 给出 4.3333333333333333

    // (divide and floor)(分割和下限)
    将 x 除以 y,然后将答案向下舍入到最接近的整数值。请注意,如果其中一个值是 float,您将返回 float。
    13 // 3 给出 4
    -13 // 3 给出 -5
    9//1.81 给出 4.0

    % (modulo)
    返回除法的余数
    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。

    & (位与)
    数字的按位 AND:如果两个位都是 1,则结果为 1。否则为 0。
    5 & 3 给出 1 (0101 & 0011 给出 0001)

    |(按位 OR)
    数字的按位 OR:如果两个位都为 0,则结果为 0。否则,它是 1。
    5 | 3 给出 7 (0101 | 0011 给出 0111)

    ^ (按位 XOR)
    数字的按位 XOR:如果两个位(1 或 0)相同,则结果为 0。否则,它是 1。
    5 ^ 3 给出 6(0101 ^ 0011 给出 0110)

    ~(按位反转)
    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
    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 返回 True
    x = ‘str’; y = ‘stR’; x == y 返回 False
    x = ‘str’; y = ‘str’; x == y 返回 True
    != (不等于)
    如果对象不相等,则进行比较
    x = 2; y = 3; x != y 返回 True

    not (布尔值 NOT)
    如果 x 为 True,则返回 False。如果 x 为 False,则返回 True。
    x = True;而不是 x 返回 False。

    AND (布尔值 AND)
    如果 x 为 False,则 x 和 y 返回 False,否则返回 y 的计算
    x = False; y = True;x 和 y 返回 False,因为 x 为 False。在这种情况下,Python 不会计算 y,因为它知道 ‘and’ 表达式的左侧是 False,这意味着无论其他值如何,整个表达式都将是 False。这称为短路评估。

    or (布尔值 OR)
    如果 x 为 True,则返回 True,否则返回 y 的计算结果
    x = True; y = False;x 或 y 返回 True。短路评估也适用于此处。

    数学运算和赋值的快捷方式

    通常对变量运行数学运算,然后将运算结果赋值给变量,因此此类表达式有一个快捷方式:

    a = 2
    a = a * 3
    can be written as: 可以写成:

    a = 2
    a *= 3
    请注意,这将 var = var operation expression 变为 var operation= expression。

    Evaluation Order 评估顺序

    如果你有一个表达式,比如 2 + 3 * 4,是先做加法还是先做乘法?我们的高中数学告诉我们,应该先进行乘法。这意味着乘法运算符的优先级高于加法运算符。

    下表提供了 Python 的优先级表,从最低优先级(绑定最少)到最高优先级(绑定性最强)。这意味着在给定的表达式中,Python 将首先计算表中较低的运算符和表达式,然后再计算表中列在较高位置的运算符和表达式。

    为了完整起见,提供了下表,该表摘自 Python 参考手册。最好使用括号对运算符和操作数进行适当的分组,以便显式指定优先级。这使得程序更具可读性。有关详细信息,请参阅下面的更改 Order of Evaluation (更改评估顺序)。

    lambda : Lambda 表达式
    if – else :条件表达式
    or : Boolean OR
    and : Boolean AND
    not x : 布尔值 NOT
    in, not in, is, is not, <, <=, >, >=, !=, == :比较,包括成员资格测试和身份测试
    | : Bitwise OR |:
    ^ : Bitwise XOR ^ :
    & : Bitwise AND
    <<, >> : Shifts
    +, – : 加法和减法
    *, /, //, % : 乘法、除法、向下取整除法和余数
    +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 的内容。

    Associativity 关联性
    运算符通常从左到右关联。这意味着具有相同优先级的运算符以从左到右的方式计算。例如,2 + 3 + 4 的计算结果为 (2 + 3) + 4。

    Expressions 表达 式

    示例(另存为 expression.py):
    length = 5
    breadth = 2
    
    area = length * breadth
    print('Area is', area)
    print('Perimeter is', 2 * (length + breadth))
    // Output: 输出:
    
    $ python expression.py
    Area is 10
    Perimeter is 14
    

    How It Works 如何运作
    矩形的长度和宽度以相同的名称存储在变量中。我们借助表达式使用这些来计算矩形的面积和周长。我们将表达式 length * breadth 的结果存储在变量区域中,然后使用 print 函数打印它。在第二种情况下,我们直接在 print 函数中使用表达式 2 * (length + breadth) 的值。

    另外,请注意 Python 如何漂亮地打印输出。即使我们没有在 ‘Area is’ 和变量 area 之间指定一个空格,Python 也为我们提供了它,以便我们得到一个干净漂亮的输出,并且这样程序的可读性要高得多(因为我们不需要担心用于输出的字符串中的间距)。这是 Python 如何让程序员的生活更轻松的一个例子。

    Summary 总结
    我们已经了解了如何使用运算符、操作数和表达式 – 这些是任何程序的基本构建块。接下来,我们将看到如何在我们的程序中使用 statements 来利用这些。

    作者:Te amo Συγγνώμη

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python中的运算符官方详解(附代码)

    发表回复