python运算符

假装没事ソ 提交于 2020-01-19 15:16:08

 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。在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个。使用比较运算符时,会返回一个布尔值(True或False)。

  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

 

  5、>=

  是否大于等于。

a1 = 10
b1 = 11

a2 = 10

print(a1 >= b1)
# ============> False

print(a1 >= a2)
# ============> True

 

 

  6、<=

  是否小于等于。

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

 

 逻辑运算符

  print的逻辑运算符有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 逻辑运算符

 

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!