Python运算符

运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。在python中有7个运算符,分别有:算术运算符、比较(关系)运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符。

算术运算符

算数运算符有 + - * / % // ** 7个。

注意:使用运算符时,左边对象的 自身方法或 自身的反向方法(如 :__add____radd__ )是否符合它们的要求,否者就会报错TypeError

  1. +
    用于对象之间的相加,通常用于数字的加法运算和字符串拼接。
    a1 = 10
    b1 = 20
    
    a2 = "abc"
    b2 = "def"
    
    print(a1 + b1)
    
    ##############################################
    # 结果 abcdef
    
    print(a2 + b2)
    ##############################################
    # 结果 30
    
    print(a1 + b2)
    # ###########################################
    # 不符合 __add__ 、 __radd__ 要求会报错
    # TypeError: unsupported operand type(s) for +: 'int' and 'str'
    
    
  2. -
    主要用于数字的加减。
    a1 = 10
    b1 = 20
    
    print(a1 - b1)
    
    # #########################################
    # 结果 -10
    
  3. *
    主要用于数字相乘或数据重复多少次。
    a1 = 10
    b1 = 20
    
    a2 = "abc"
    
    a3 = [1,2]
    
    print(a1 * b1)
    # ======>    200
    
    print(a2 * 2)
    # ======> abcabc
    
    print(a3 * 3)  # 列表重复3次
    # ======> [1, 2, 1, 2, 1, 2] 
    
  4. /
    主要用于数字相除。
    a1 = 10
    b1 = 20
    
    print(a1 + b1)
    # =========> 0.5
    
    
  5. %
    取模 - 返回除法的余数。
    a1 = 11
    b1 = 2
    
    print(a1 % b1)
    # ============> 1
    
    
  6. //
    取整除 - 返回商的整数部分(向下取整)
    a1 = 11
    b1 = 2
    
    
    print(a1 // b1)
    # ===============> 5
    
    
  7. **
    数字幂运算
    a1 = 10
    b1 = 2
    
    print(a1 ** b1)
    # ==============> 100 
    

比较(关系)运算符

比较运算符有:== != <> > < >= <= 7个。使用比较运算符时,会返回一个布尔值(TrueFalse)。

  1. ==
    用于比较对象是否相等,与is有区别。

    a1 = 10
    b1 = 2
    
    a2 = int(10)
    
    print(a1 == b1)
    # ==================> False
    
    print(a1 == a2)
    # ==================> True
    
  2. !=<>
    这两个运算符都是用于比较两个对象是否不相等。

    注:在python3中已经没有<>, 只有!=。

    a1 = 10
    b1 = 2
    
    a2 = 10
    
    
    print(a1 != b1)
    # ===================== > True
    
    print(a1 != a2)
    # =====================> False
    
    
  3. >
    是否大于。

    a1 = 10
    b1 = 2
    
    print(a1 > b1)
    # ============> True
    
    
      4、<
    
      是否小于。
    
    a1 = 10
    b1 = 2
    
    
    print(a1 < b1)
    # ============> False
    
    
  4. >=
    是否大于等于。

    
    a1 = 10
    b1 = 11
    
    a2 = 10
    
    print(a1 >= b1)
    # ============> False
    
    print(a1 >= a2)
    # ============> True
    
  5. <=
    是否小于等于。

    a1 = 10
    b1 = 11
    
    a2 = 10
    
    
    print(a1 <= b1)
    # ==============>True
    
    print(a1 <= a2)
    # ==============> True
    
    
    

赋值运算符

赋值运算符是用于给变量赋值的运算符。包括 = 和 =与算术运算符的结合( += -= *= /= %= //= **= ),共8个。

  1. =
    把等号右边的值赋给左边的变量,不参与算术运算。

    a = 1
    b = "hello"
    c = [1, 2, 3]
    
  2. +=
    和原来的值相加并重新赋值给自己。

    a = 11
    a += 10  # 等价于:a = a + 10
    
    b = [1, 2]
    b += [3, 4]
    
    print(a)
    # ==================> 21
    
    print(b)
    # ==================> [1, 2, 3, 4]
    
    
  3. -=
    和原来的值相减并重新赋值给自己。

    a = 11
    a -= 10
    
    print(a)
    # ================> 1
    
    
  4. *=
    和原来的值相乘并重新赋值给自己。

    a = 2
    a *= 5
    
    print(a)
    # ====================> 10
    
    
  5. /=
    和原来的值相除并重新赋值给自己。

    a = 10
    a /= 2
    
    print(a)
    # ========================> 5.0
    
    
  6. %=
    和原来的值取模并重新赋值给自己。

    a = 11
    a %= 2
    
    print(a)
    # ======================> 1
    
  7. //=
    和原来的值取整并重新赋值给自己。

    a = 11
    a //= 2
    
    print(a)
    # ==================> 5
    
    
  8. **=
    和原来的值进行幂运算并重新赋值给自己。

    a = 10
    a **= 2
    
    
    print(a)
    # ===================> 100
    
    

逻辑运算符

python的逻辑运算符有3个,分别是 and、or和not。

  1. and
    对应布尔"与" , 如果 左边 为 False,返回 False,否则它返回 右边 的计算值。

    # 注:0的布尔值为False,其他数的布尔值为True
    x1 = 9
    y1 = 10
    
    x2 = 0
    y2 = 12 + 23
    
    x3 = True
    y3 = 12 + 10
    
    print(x1 and y1)
    # =====================> 10
    
    print(x2 and y2)
    # =====================> 0
    
    print(x3 and y3)
    # =====================> 22
    
  2. or
    对应布尔"或" ,如果 左边为True,它返回 左边 的值,否则它返回 右边 的计算值。

    x1 = 9
    y1 = 10
    
    x2 = False
    y2 = 12 + 10
    
    print(x1 or y1)
    # ====================> 9
    
    print(x2 or y2)
    # ====================> 22
    
  3. not
    对应布尔"非" ,如果 为 True,返回 False 。如果为 False,它返回 True。

    a = 1
    b = 0
    
    print(not a)
    # =====================> False
    
    print(not b)
    # =====================> True
    
    

位运算符

按位运算符是把数字看作二进制来进行计算的。python的位运算符有 & | ^ ~ << >> ,一共6个。关于运算方式请看 按位与、或、异或等运算方法。

  1. &
    按位与运算符,参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0

    a = 3  # 0b11
    b = 5  # 0b101
    
    print(a & b)
    # ==================> 1
    
  2. |
    按位或运算符,只要对应的二个二进位有一个为1时,结果位就为1。

    a = 3
    b = 5
    
    print(a | b)
    # ==============> 7    # 0b111
    
    
  3. ^
    按位异或运算符,当两对应的二进位相异时,结果为1。

    a = 3
    b = 5
    
    print(a ^ b)
    # ==============> 6    # 0b110
    
    
  4. ~
    按位取反运算符,对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1。

    a = 3
    
    print(~a)
    # ===============> -4         #   -0b100 
    
    
  5. <<
    左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。

    a = 3
    
    print(a << 2)
    #==================> 12    # 0b1100
    
    
  6. >>
    右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数。

    a = 10    # 0b1010
    
    print(a >> 2)
    # ===============> 2    # 0b10
    

成员运算符

成员运算符由于判断成员与序列的包含关系,序列包含字符串、元祖、列表、字典等。成员运算符有两个 : in 和 not in

  1. in
    如果在指定的序列中找到值返回 True,否则返回 False。
    msg = "hello world"
    
    name_tuple = ("Alex", "Jack", "Iain",)
    
    name_list = ["Alex", "Jack", "Iain"]
    
    info_dic = {
    	"name": "Jack",
    	"age": 20
    }
    
    
    print("e" in msg)
    # ==========> Ture
    
    print("William" in name_tuple)
    # ==========> False
    
    print("Alex" in name_tuple)
    # ==========> True
    
    print("name" in info_dic)        # 序列为字典时判断的是键是否在序列中
    # ==========> True
    
    
  2. not in
    如果在指定的序列中没有找到值返回 True,否则返回 False。
    msg = "hello world"
    
    name_tuple = ("Alex", "Jack", "Iain",)
    
    name_list = ["Alex", "Jack", "Iain"]
    
    info_dic = {
    	"name": "Jack",
    	"age": 20
    }
    
    print("e" not in msg)
    # ====================> False
    
    print("William" not in name_tuple)
    # ====================> True
    
    print("Alex" not in name_tuple)
    # ====================> False
    
    print("name" not in info_dic)
    # ====================> False
    
    

身份运算符

身份运算符用于比较两个对象的存储单元(通常比较对象的ID),Python的身份运算符有2个:is 和 not is。

  1. is
    is 是判断两个标识符是不是引用自一个对象,如果引用的是同一个对象则返回 True,否则返回 False
    a = "Jack"
    b = "Jack"
    
    print(id(a))
    # ==================>2294321321136
    
    print(id(b))
    # ==================> 2294321321136
    
    print(a is b)
    # ==================> True
    
    
  2. is not
    判断两个标识符是不是引用自不同对象,如果引用的不是同一个对象则返回结果 True,否则返回 False。
    
    a = "Jack"
    b = "Jack"
    c = 12
    
    print(id(a))
    # ================> 1464669902000
    
    print(id(b))
    # ================> 1464669902000
    
    print(id(c))
    # ================> 140725329687136
    
    print(a is not b)
    # ================> False
    
    print(a is not c)
    # ================> True
    
    

运算符优先级

python有这么多的运算符,当多个运算符一起使用时就会有一定的优先级。一般情况下,运算符优先级表决定了哪个运算符在别的运算符之前计算。但是,如果你想要改变它们默认计算顺序,你得使用圆括号。例如,你想要在一个表达式中让加法在乘法之前计算,那么你就得写成类似(10 + 20) * 2的样子。
其优先级顺序如下表所示:

序号 运算符 描述
1 ** 指数(次幂)运算
2 + - 补码,一元加减(最后两个的方法名称是+@和-@)
3 * / % // 乘法,除法,模数和地板除
4 + -
5 >> << 向右和向左位移
6 & 按位与
7 ^ 按位异或和常规的“OR”
8 <= < > >= 比较运算符
9 <> == != 等于运算符
10 = %= /= //= -= += *= **= 赋值运算符
11 is is not 身份运算符
12 in not in 成员运算符
13 not or and 逻辑运算符

注:更多关于运算符的信息可以点击运算符重构。

posted @ 2020-01-19 14:31  403·Forbidden  阅读(341)  评论(0编辑  收藏  举报