python03 运算符(操作符)、运算符的优先级

1、概念

  • 运算符可以对一个值或多个值进行运算或各种操作:+ - * /
    • 在python2里面,两个整数相除得到的结果是一个整数:10/3=3
    • 在python3里面,两个整数相除得到的结果是一个浮点数:10/3=3.33333333

 

2、运算符的分类

(1)算数运算符

  • 进行运算时,不会直接影响原变量的值,要重新赋值才行
  • 加法运算符 + 
    • 如果是字符串进行加法运算符,则进行拼串
    • 注意,在python中字符串和数字不能进行加法运算(但可以进行类型转换)
  • 减法运算符 - 
    • 字符串相减会报错
  • 乘法运算符 * 
    • 如果字符串和数字相乘,则会进行复制操作,字符串重复指定次数
    • 幂运算 ** :9**2  -- 9的2次方      ;     9**(1/2) -- 9的1/2次方
  • 除法运算符 /
    • 运算时结果总会返回一个浮点型
    • 整除 // :只保留整数(不进行四舍五入)    10/3=3
      • 注意:-5//2=-3   向下取整
    • 除0报错:9/0 -- 抛出异常
  • 取模运算符 %
    • 取模就是求两个数相除的余数 
    • 比如:10/3=3……1 取模就是取1
  • 注意问题:print(81**1/2) # 40.5 因为运算符的优先级

 

(2)赋值运算符

  • = 等号,在计算机编程里面,被称为赋值运算符
    • =号可以将等号右边的值赋值给等号左侧的变量
    • 等号左边一定不能是常量或者表达式(不要和数学弄混)
    • 注意:= 是赋值,==才是相等!!!不要少写一个=号
    • 等号连接的变量可以传递赋值
      • a = b = c = d = ‘hello’  ----- a = ‘hello’
      • m,n = 3,5(拆包)
      • x = ‘hello’,‘dog’,‘yes’
  • +=
    • a+=5  相当于  a=a+5
  • -=
    • a-=5  相当于  a=a-5
  • *=
    • a*=5  相当于  a=a*5
  • **=
    • a**=5  相当于  a=a**5
  • /=
    • a/=5  相当于  a=a/5
  • //=
    • a//=5  相当于  a=a//5
  • %=
    • a%=5  相当于  a=a%5

 

(3)比较运算符(关系运算符)

  • 用来比较两个值之间的关系,总会返回一个布尔值
  • > 大于
  • >= 大于等于
  • < 小于
  • <= 小于等于
  • == 等于
    • == 不比较类型和id  ---- ‘12’==12  True
    • is 比较的是两个对象的是否是同一个对象、比较id
      • 比如:a = 1 is True   #  False
      • 比如:a = 1 is 1  # True 
  • != 不等于
    • 在python2里,可以使用 != 和 <> 来表示不等
    • 在python3中,则只能使用 !=
    • != 不比较类型和id
    • is not 比较的是两个对象是否不是同一个对象,比较id
  • 字符串使用比较运算符
    • 对字符串的比较实际上是比较字符串的Unicode编码
    • 比较两个字符串是逐位进行比较的
      • ‘ab’>'b'  # false  ---a和b比较,第一个b和第二个b的后面比较,但是后面没有东西,那么第一个b就大,但是前面a和b已经比较出结果了,后面就不需要再比较了
    • 如果不希望使用Unicode编码来比较,则可以进行类型转换
    • 数字和字符串之间,作==运算的结果是False,做!=结果为True,不支持其他的比较运算

 

(4)逻辑运算符

  • 用于逻辑判断
  • 逻辑与 and
    • 全True为True,只要有False就为False
    • 短路的与
      • 优先寻找False,是False就短路
      • 第一个值为False,就执行第一个,后面就不会再管了(短路)
      • 第一个值为True,则会执行后面的,不管后面是True还是False
  • 逻辑或 or
    • 全False为False,只要有True就为True
    • 短路的或
      • 优先寻找True,只要是True就短路
      • 第一个值为True,就执行第一个,后面的值就不再管了
      • 第一个值为False,就直接执行第二个,不管第二个是True还是False
  • 逻辑非 not
    • 对于布尔值,会进行取反操作
      • True变成False
      • False变成True
      • 对于非布尔值,会自动将其转换为布尔值,然后再取反
  • 逻辑运算符的结果,一定是布尔值?
    • 不一定,可以是表达式或者值或其他的东西
    • 比如:print(1>2 or 'hello')# hello

 

(5)条件运算符(三元运算符)

  • 语法
    • 语句1 if 条件表达式 else 语句2
  • 执行流程
    • 执行时,会先对条件表达式进行求职判断
    • True,执行语句1,返回执行结果
    • False,执行语句2,返回执行结果

 

(6)位运算符

  • 按位运算的规则
    • 将所有的数转换为二进制再运算
  • 按位与 &
    • 同为1则为1,否则为0
  • 按位或 |
    • 只要有一个为1,就为1,同为0则为0
  • 按位异或 ^
    • 相同为0,不同为1
  • 按位左移 <<
    • a << n  ---- a * 2的n次方
  • 按位右移 >>
    • a >> n ---- a 除以 2的n次方
  • 按位取反 ~

 

3、运算符的优先级

  • 如果不想记忆那些优先级的符号,那就记住最重要的几个
  • 在不知道哪个优先级高的情况下,又想要先算一个表达式,就用()号将它括起来,一般情况下都适用(万一遇到了比()号优先级更高的运算符那)
  • 逻辑运算的优先级
    • not > and > or(不加括号的情况)

 

思维导图:

相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页