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

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

  • 相关阅读:
    Matlab 绘制三维立体图(以地质异常体为例)
    Azure DevOps的variable group实现array和hashtable参数的传递
    Azure DevOps 利用rest api设置variable group
    Azure AADSTS7000215 其中一种问题的解决
    Power BI 实现实时更新Streaming Dataset
    AAD Service Principal获取azure user list (Microsoft Graph API)
    Matlab 沿三维任意方向切割CT图的仿真计算
    Azure Powershell script检测登陆并部署ARM Template
    Azure KeyVault设置策略和自动化添加secrets键值对
    Azure登陆的两种常见方式(user 和 service principal登陆)
  • 原文地址:https://www.cnblogs.com/lczmx/p/12213557.html
Copyright © 2011-2022 走看看