Python学习(4)|同一运算符,整数缓存,身份运算符,优先级问题

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

同一运算符:

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

运算符 is :是判断两个标识符是不是引用同一个对象;

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

is 与 == 的区别:

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

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

is 运算符比 == 效率高,在变量和 None 进行比较时,应该使用 is

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

整数缓存问题:

a = 30
b = 30
print(id(a))            #执行结果:140731347797168
print(id(b))            #执行结果:140731347797168
print(a is b)           #执行结果:True

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

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

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

a = 257
b = 257
print(id(a))			#执行结果:2233271633104
print(id(b))			#执行结果:2233271633104
print(a is b)			#执行结果:True

成员运算符:

运算符 in :如果在指定的序列中找到值返回 True,否则返回 False

运算符 not in :不在,则返回 True

a = [10,20,30]
print(10 in a)          #执行结果:True
print(10 not in a)		#执行结果:False

运算符优先级问题:

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

乘除优先加减

位运算和算数运算 > 比较运算符 > 赋值运算符 > 逻辑运算符

#测试运算符优先级
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)

【练习】

使用Python表示数学式:

(5+10*x)/5-13*(y-1)*(a+b)/x+9*(5/x+(12+x)/y)

  • 19
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bug.ink

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值