zoukankan      html  css  js  c++  java
  • 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个。使用比较运算符时,会返回一个布尔值(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 逻辑运算符

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

  • 相关阅读:
    Android Studio生成APK自动追加版本号
    jquery.nicescroll.min.js滚动条使用方法
    Guid.NewGuid().ToString()生成唯一码js
    解决移动端H5海报滑动插件适应大部分手机问题 手机端高度自适应
    SouthidcEditor编辑器如何支持上传png图片
    谈灰色行业网站建设需要注意的事项
    33个免费的电子商务图标集
    WebKit的已实施srcset图像响应属性
    免费清新浅色图标集
    闪光的不一定是金子:设计数据的一种常见误解
  • 原文地址:https://www.cnblogs.com/lczmx/p/12213557.html
Copyright © 2011-2022 走看看