Python同一运算符_身份运算符_优先级问题

同一运算符_身份运算符_优先级问题

1 同一运算符

image-20211025114853853

同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址。

运算符 描述
is is是判断两个标识符是不是引用同一个对象
is not is not 是判断两个标识符是不是引用不同对象

is== 区别:

is 用于判断两个变量引用对象是否为同一个,既比较对象的地址。

== 用于判断引用变量引用对象的值是否相等,默认调用对象的 __eq__()方法。

a=20
b=20
c=30
print("a和b是同一个对象",a is b)  #执行结果:True
print("a和c是同一个对象",a is c)  #执行结果False
print("a和c不是同一个对象",a is not c)  #执行结果True

2 整数缓存问题

  1. 命令行模式下,Python仅仅对比较小的整数对象进行缓存(范围为[-5, 256])缓存起来C语言底层用数组实现,连续分配空间,便于查找,而并非是所有整数对象。

  2. 文件模式下,所有数字都会被缓存,范围是:[-无穷大,+无穷大])

    1. 缓存实现:[-5,256]仍然底层用数组实现;不在[-5,256]出现的数,缓存到链表中,不连续分配空间

总结

  1. is 比较两个对象的 id 值是否相等,是否指向同一个内存地址
  2. == 比较的是两个对象的内容是否相等,值是否相等
  3. is 运算符比 == 效率高,在变量和None进行比较时,应该使用 is

操作】同一运算符测试

a = 1000
b = 1000
a == b  #True
a is b  #命令行下是False。 文件下执行是True
c = 10
d = 10
c is d  #True    

3 成员运算符

成员运算符测试实例中包含了一系列的成员,包括字符串,列表或元组。

运算符 描述
in 如果在指定的序列中找到值返回 True,否则返回 False
not in 不在,则返回True
a = "python"
b = "py"
print(b in a)    #True
c = [10,20,30]
print(10 not in c)  #False

4 运算符优先级问题

如下优先级,从高到低。

运算符 描述
** 指数 (最高优先级)
~ 按位翻转
* / % // 乘,除,取模和取整除
+ - 加法减法
>> << 右移,左移运算符
& 位 ‘AND’
^ | 位运算符
<= < > >= 比较运算符
<> == != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not or and 逻辑运算符
#测试运算符优先级
a,b,c,d=20,10,15,5
e=(a+b)*c/d    #30*15/5
print('(a+b)*c/d的执行结果:',e)
e=(a+b)*(c/d)   #30*(15/5)
print('(a+b)*(c/d)的执行结果:',e)
e=a+(b*c)/d    #20+150/5
print('a+(b*c)/d的执行结果:',e)

实际使用中,记住如下简单的规则即可,复杂的表达式一定要使用小括号组织。

  1. 乘除优先加减
  2. 位运算和算术运算>比较运算符>赋值运算符>逻辑运算符

5 基本运算符总结

运算符 说明
and , or , not 布尔与、布尔或、布尔非
is , is not 同一性判断,判断是否为同一个对象
in , not in 判断是否在指定序列中
<,<=,>,>=,!=,== 比较值是否相当,可以连用
| ^ & 按位或,按位异或、按位与
<<, >> 移位
~ 按位翻转
+,-,*,/,//,% 加,减,乘,浮点除、整数除、取余
** 幂运算

【操作】使用python表示数学式:

答案: (5+10*x)/5-13*(y-1)*(a+b)/x+9*(5/x+(12+x)/y)
位运算和算术运算>比较运算符>赋值运算符>逻辑运算符

5 基本运算符总结

运算符 说明
and , or , not 布尔与、布尔或、布尔非
is , is not 同一性判断,判断是否为同一个对象
in , not in 判断是否在指定序列中
<,<=,>,>=,!=,== 比较值是否相当,可以连用
| ^ & 按位或,按位异或、按位与
<<, >> 移位
~ 按位翻转
+,-,*,/,//,% 加,减,乘,浮点除、整数除、取余
** 幂运算

【操作】使用python表示数学式:

答案: `(5+10x)/5-13(y-1)(a+b)/x+9(5/x+(12+x)/y

相关推荐

  1. python中逻辑运算符and 和 or 的优先级问题

    2024-02-22 04:54:01       24 阅读
  2. MySQL 运算符以及优先级

    2024-02-22 04:54:01       44 阅读
  3. C 运算符优先级

    2024-02-22 04:54:01       29 阅读
  4. Python运算符

    2024-02-22 04:54:01       69 阅读
  5. python 运算符

    2024-02-22 04:54:01       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-22 04:54:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-22 04:54:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-02-22 04:54:01       82 阅读
  4. Python语言-面向对象

    2024-02-22 04:54:01       91 阅读

热门阅读

  1. [AIGC] JVM内存结构中的方法区主要存储哪些信息?

    2024-02-22 04:54:01       49 阅读
  2. hbuilder运行不了php文件是什么原因?

    2024-02-22 04:54:01       53 阅读
  3. 设计模式-面试题

    2024-02-22 04:54:01       54 阅读
  4. Maya监听 DAG events

    2024-02-22 04:54:01       51 阅读
  5. 如何修改游戏中的ip地址

    2024-02-22 04:54:01       63 阅读
  6. 【Linux 内核源码分析】物理内存组织结构

    2024-02-22 04:54:01       53 阅读
  7. 开源软件的影响力

    2024-02-22 04:54:01       52 阅读
  8. QT常用事件

    2024-02-22 04:54:01       43 阅读