• Python 运算符和表达式


    运算符是代表一定运算功能的符号,可以对常量、变量等进行处理。由各种运算符和运算对象组成的式子称为表达式。

    常见的运算符和表达式

    算数运算符和算术运算表达式

    算数运算符用于对算数运算对象进行算术运算。由算数运算符与算数运算对象组成的式子称为算术运算表达式。

    运算符名称算数运算表达式实例表达式结果(设 a = 3,b = 4)
    +a + b7
    -a - b-1
    *a * b12
    /a / b0.75
    %取模a % b3
    **a ** b64
    //整除a // b0

    算数运算符两边的操作数一般为整型或浮点型,特殊情况下也可以是布尔类型或复数类型。当参与算术运算的两个操作数是整型或浮点型时,其运算结果类型也是整型或浮点型。

    print(2 / 3)  # 一般情况下,python中的除法运算结果均为 浮点数
    print(2 // 3)  # 只有当整除时,才会得到整型的结果
    
    • 1
    • 2
    关系运算符和关系运算表达式

    关系运算符用来比较两个对象之间的关系。对象可以是数或字符串等常量、变量或表达式。由关系运算符与比较对象组成的表达式称为关系运算表达式。关系表达式的结果为真返回True,否则返回 False。

    运算符描述实例表达式结果(设 a = 20,b = 30)
    ==等于a == bFalse
    !=不等于a != bTrue
    >大于a > bFalse
    <小于a < bTrue
    >=大于等于a >= bFalse
    <=小于等于a <= bTrue
    赋值运算符和赋值运算表达式

    赋值运算符用来将表达式的结果赋给变量。由赋值运算符与赋值运算对象组成的式子称为赋值运算表达式。

    运算符名称实例表达式结果(设 a = 4, b = 3, c = 2)
    =简单赋值运算符c = a + bc = 7
    +=加法赋值运算符c += a 等价于 c = c + ac = 6
    -=减法赋值运算符c -= a 等价于 c = c - ac = -2
    *=乘法赋值运算符c *= a 等价于 c = c * ac = 8
    /=除法赋值运算符c /= a 等价于 c = c / ac = 0.5
    %=取模赋值运算符c %= a 等价于 c = c % ac = 2
    **=幂赋值运算符c **= a 等价于 c = c ** ac = 16
    //=取整除赋值运算符c //= a 等价于 c = c // ac = 0
    逻辑运算符和逻辑运算表达式

    逻辑运算符用来判断逻辑运算对象之间的关系。由逻辑运算符与逻辑运算对象组成的式子称为逻辑运算表达式。

    运算符名称逻辑表达式描述
    and逻辑“与”x and yx 为 True 或非 0,返回 y,否则返回 x
    or逻辑“或”x or yx 为 True 或非 0,返回 x,否则返回 y
    not逻辑“非”not xx 为 True 或非 0,返回 False,否则返回 True
    '''
    其实不用看表格描述,只要清楚逻辑运算中(中学数学有教过的)
    与:两边同真才为真
    或:一边为真就为真
    非:真的非为假
    
    真值:除 0 以外的其余一切均为真值
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    位运算符和位运算表达式

    位运算符用来把两个运算对象按照二进制进行位运算。由位运算符与位运算对象组成的式子称为位运算表达式。

    运算符名称实例表达式结果(a = 60(0011 1100), b = 13(0000 1101))
    &按位与a & b12(0000 1100)
    |按位或a | b61(0011 1101)
    ^按位异或a ^ b49(0011 0001)
    ~按位取反~ a-61(1100 0011)
    <<左移位a << 2240(1111 0000)
    >>右移位a >> 215(0000 1111)
    # 使用"^"运算符对字符加密和解密 
    key = input("请输入加密密钥: ")
    enc = input("请输入要加密的字符: ")
    dec = ord(key) ^ ord(enc)     # 对字符加密
    print("加密结果: ", chr(dec))
    enc_1 = ord(key) ^ dec        # 对字符解密
    print("解密结果: ", chr(enc_1))
    
    请输入加密密钥: 1
    请输入要加密的字符: h
    加密结果:  Y
    解密结果:  h
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    成员运算符和成员运算表达式

    成员运算符用来判断两个对象之间的关系。由成员运算符与成员运算对象组成的式子称为成员运算表达式。

    运算符描述实例结果
    in判断对象是否在序列中obj in sequenceobj 在 sequence 中返回 True,否则返回 False
    not in判断对象是否不在序列中obj not in sequenceobj 不在 sequence 中返回 True,否则返回 False
    ls = [3, 6, 5, '洛梦裳', '白浅予', '我的']
    a = '3' in ls
    b = 3 not in ls
    print("a = ", a, "b = ", b)
    
    a =  False b =  False
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    身份运算符和身份运算表达式
    运算符描述实例结果
    is判断两个标识符是不是引用自同一个对象x is y引用同一个对象返回 True, 否则返回 False
    is not判断两个标识符是不是引用自不同对象x is not y引用不同对象返回 True, 否则返回 False

    is 运算符, == 运算符和 operator 中的 eq() 区别:
    a == b :比较对象a 和对象 b 的值是否相等。相等返回 True, 不相等返回 False。operator.eq(a, b) 类似。
    a is b:比较对象a 和对象 b 是否有相同的引用,即 id 是否相等。相同的返回 True,否则返回 False。

    a = 3
    print("id(a) = ", id(a))
    b = 3
    print("id(b) = ", id(b))
    c = '3'
    print("id(c) = ", id(c))
    res1 = a is b
    res2 = b is not c
    print("结果1: ", res1, "结果2: ", res2)
    
    id(a) =  2526965727536
    id(b) =  2526965727536
    id(c) =  2526967051696
    结果1:  True 结果2:  True
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    运算符优先级

    当多种运算符出现在同一个表达式中时,按照运算符的优先级决定运算次序,优先级高的运算将先得到处理。下表中等级1的优先级最高。

    等级运算符名称
    1(), [], {}括号
    2**指数运算
    3~, +, -按位取反,一元加号和减号
    4*, /, %, //乘,除,取模和取整除
    5+, -加法,减法
    6>>, <<右移,左移运算符
    7&位与
    8^, |异或,位或
    9<, <=, >, >=比较运算符
    10==, !=等于,不等于运算符
    11=, %=, /=, //=, -=, +=, *=, **=赋值运算符
    12is, is not身份运算符
    13in, not in成员运算符
    14not, and, or逻辑运算符

    补充说明

    • Python 中的一些运算符不仅可用于数字等运算,还可以用于对字符串、列表和元组等组合对象的运算。
    • Python支持 ++i,–i 运算符,但含义和其他语言的不同。
    • Python 不支持 i++, i-- 运算符.
    
    >>> i = 2
    >>> ++i    # 等价于 +(+i)
    2
    >>> --i     # 等价于 -(-i)
    2
    >>> 2--3    # 等价于 2-(-3)
    5
    >>> i++
      File "", line 1
        i++
           ^
    SyntaxError: invalid syntax
    >>> i--
      File "", line 1
        i--
           ^
    SyntaxError: invalid syntax
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    写在最后:
    首先,如果本篇文章有任何错误,烦请读者告知!不胜感激!
    其次,本篇文章仅用于日常学习以及学业复习,如需转载等操作请告知作者(我)一声!
    最后,本文会持续修改和更新,如果对本分栏的其他知识也感兴趣,可以移步目录导航专栏,查看本分栏的目录结构,也更方便对于知识的系统总结!
    兄弟姐妹们,点个赞呗!
    感谢!笔芯!

  • 相关阅读:
    day25--JS进阶(递归函数,深浅拷贝,异常处理,改变this指向,防抖及节流)
    我要写整个中文互联网界最牛逼的JVM系列教程 | 「JVM与Java体系架构」章节:区分栈的指令集架构和寄存器的指令集架构
    【IDE插件教学】华为云应用中间件系列—Redis实现(电商游戏应用)排行榜示例
    巨神奇,2013年的老Mac,竟直接装上macOS Ventura 13.1 Beta版
    Java Story
    Mac MySQL
    SpringBoot WebSocket STOMP
    如何缓解压力、拒绝内耗【1】
    黑龙江省人口与社会经济数据集(2015-2016年)
    解决缓存与数据库同步下的同步锁问题之分段锁
  • 原文地址:https://blog.csdn.net/weixin_52275610/article/details/126611555