03-02python运算符

运算符

算术运算符

运算符 描述 实测
+ 加:两个对象相加 1+1=3
- 减:第一个数减去第二个数 1-1=0
* 乘;两个对象相乘 1*1=1
/ 除;第一个数除以第二个数 1/1=1
** 幂:返回x的y此幂 10**20 10的20次方
// 取整除:返回商的整数部分 9//2=4.5取整就是4
% 取模:返回除法的余数 9%2=4.5无法整除返回为1
9.2%2=1.1999999999999993详情参考Python中的取模运算
算术运算符只能对int和float做运算
自然除就是我们正常理解的数学计算,取整除是取结果的整数部分
在python3中,所有的除法都是自然除,返回的都是float;python2中的除法都是取整除,返回的都是int
例7:运算
In [22]: 1 + 1
Out[22]: 2

In [23]: 1 + 1.2    # 会隐式转换为float进行计算
Out[23]: 2.2

In [24]: type(1 + 1.2)
Out[24]: float

例8:python2与python3除法区别
In [25]: 3 / 2   # python3自然除
Out[25]: 1.5
>>> 3 / 2        # python2整除
1

>>> float(3) / 2   # python2中自然除的方法
1.5

>>> 5.0 / 2    # python2中自然除的方法
2.5

例9:python3的除法,返回全部都是float
In [27]: type(4/2)                                                                                                                                                               
Out[27]: float

比较运算符

  • >:大于
  • <:小于
  • ==:等于
  • !=:不等于,python2中有<>不等于的写法,但是在python3中已废弃
  • >=:大于或等于
  • <=:小于或等于

注意:比较运算的返回值都是bool类型

例9:比较运算符
In [27]: 3 > 5
Out[27]: False

In [28]: 5 > 3
Out[28]: True

In [29]: 5 != 3
Out[29]: True

逻辑运算符

  • and:与
  • or:或
  • not:非

逻辑运算符的操作数都是bool类型或者可以隐式转换成bool类型的类型,返回值都是bool类型

例10:逻辑运算符
    逻辑运算符的操作数都是bool类型或者可以隐式转换成bool类型的类型,返回值都是bool类型

    In [30]: True and False    # 双方都必须为真
    Out[30]: False

    In [31]: True or False    # 需要一方为真就返回True
    Out[31]: True

例11:逻辑运算符经常用作短路操作; 短路操作基本不会用到not
    In [32]: def true():
        ...:     print('true')
        ...:     return True
        ...: def false():
        ...:     print('false')
        ...:     return False
        ...:
    # or当第一个为真后面的就不执行了, 如果第一个为False则会继续执行后面的,如果都执行失败,则返回Flase, 但只要一个成功就返回True
    In [29]: true() or false()                                                                                                                                           
    true
    Out[29]: True

    In [30]: false() or true()                                                                                                                                                       
    false
    true
    Out[30]: True

    In [34]: true() and true()        # and指定前面为true然后继续执行后面的, 如果都为true, 就返回true
    true
    true
    Out[34]: True

    In [36]: true() and false()    # and先执行第一个函数返回为true,继续执行第二个函数, 如果第二个函数为false就返回false
    true
    false
    Out[36]: False

    In [37]: false() and true()
    false
    Out[37]: False

    该例子可以拆分两个部分:
        1、是否执行了
        2、返回的结果

    短路操作:从左到右执行, 当已经有结果的时候, 将停止计算, 提前返回
        也就是说, 当判断式已经确定时, 不再继续处理后续表达式。 && 在失败时中断, ||在成功时中断。

例12:逻辑计算
    # 0为false
    # 整数都为true
    # None为false
    * 空列表、空元组等都是false
    In [32]: bool(0)                                                                                                                                                                 
    Out[32]: False

    In [33]: bool(2)                                                                                                                                                                 
    Out[33]: True

    In [35]: bool(None)                                                                                                                                                               
    Out[35]: False


    In [38]: 0 and 1
    Out[38]: 0

    In [39]: 0 and True
    Out[39]: 0

    In [40]: None and True

    In [41]: True and None

    In [42]: 1 and True
    Out[42]: True

成员运算符

和集合类型相关,在集合类型时会介绍

身份运算符

和面向对象相关,在面向对象时会介绍

位运算符

  • <<:左移
  • >>:右移
  • &:按位与
  • |:按位或
  • ^:按位取反
    一般用在网络底层开发中,用的非常少
    位运算符是直接操作二进制的

运算符优先级(当运算符在一起运算时)

  • 乘法运算比取模运算优先级要高
  • 算术运算 > 比较运算 > 逻辑运算
    • 可以通过括号改变优先级,所以一般不确定的要其优先级高则直接用括号
  • 拿不准或者表达式比较复杂的适合,直接使用括号来决定优先级
例13:运算符的优先级
    In [43]: 3 + 1 * 4
    Out[43]: 7

    In [44]: 3 * 4 ** 2
    Out[44]: 48

    In [45]: 3 * 4 % 3    # 乘法运算比取模运算优先级要高
    Out[45]: 0

    In [50]: 3 - 4 % 2
    Out[50]: 3

例14:比较运算与逻辑运算
    In [51]: 3 > 5 and 5 > 3
    Out[51]: False

    In [52]: 3 + 6 > 7
    Out[52]: True

    算术运算 > 比较运算 > 逻辑运算
    可以通过括号改变优先级

赋值运算符(比较特殊)

上述运算符都会返回结果,而赋值运算符是不会返回结果的
**参考如下实例,一句话概括赋值运算符:把右边计算的结果赋值给左边
赋值运算符是可以和算数运算符一起使用的

例15:赋值运算,把右边的值赋给左边,如果右边是个表达式,它会进行计算
    In [53]: i = 3 + 58

    In [54]: i
    Out[54]: 61

    In [55]: i /= 5

    In [56]: i
    Out[56]: 12.2

例16:赋值运算符和算数运算符一起使用
    In [36]: i = 8                                                                                                                                                                   

    In [37]: i += 3                                                                                                                                                                  

    In [39]: i                                                                                                                                                                       
    Out[39]: 11
posted @ 2020-05-23 13:16  此时  阅读(161)  评论(0编辑  收藏  举报