python或运算 和 in_[转]Python彻底搞懂 变量、运算符、in、id()、 is 与 ==的区别

一、变量

变量,是用来存储数据,

如果我们需要让得到的数据在后面的程序中进行运算,就需要先存储在变量中,在需要使用时再引用事先存储的变量。

它是【可变化的量】,它的概念和代数中定义的变量基本一致。

如:y=2*x,x 就是变量,x 的值不同y的值也就不同。

不同点在计算机中 y 也是个变量,计算机计算出 2*x 的值赋值给了变量y。

x 与 y 为变量的名称,我们通过变量的名称在后续程序中引用变量。

每个变量都有名称(名称使用标识符规范命名),叫变量名。Python 变量名可以是大小写英文、数字和下划线(_)的组合,但不能用数字开头。如:a=1,a_01=2,_a=3 中 a、a_01、_a 都是变量。

注意:Python 中的变量不能以数字开头,但可以使用下划线(_)开头,变量名区分大小写,变量A与a是不同的。

Python 中的变量为动态类型,所以我们定义变量时无需指定变量类型,我们可以给变量任何数据类型的值。

如下:

a=1# 纯字母 a='abc'# 动态类型,变量无固定类型,可以重新赋值任意类型值 a_01='我是变量'# 字母数字下划线混合 _a=True# 以下划线开始 12A='a'# 报错,不能以数字开始定义变量

注意:

定义变量的‘=’与数学中的‘=’意义是不同的,

Python 中的等号左边是变量名字,右边是值,

'=' 表示将右边的值传递给左边,

所以 '=' 是右连接性,值的传递顺序是从右到左。

二、运算符

1、算术运算符

加(+)、减(-)、乘(*)、除(/)、取模(%)、幂(**)、取整(//)

加、减、乘、除和数学运算的一样,不多讲。

取模(%)是返回除法的余数(23%10余3,所以值为3)。

幂(x**y)表示 x 的 y 次幂( 2**3 的值为 8)。

取整(//) 为取商的整数部分,如10//3 值为3, 9.0//2.0 值为 4.0

示例:

# 使用Python 自带的 IDLE 逐条练习以下代码 a=23b=10c=0print('a + b=',a+b)# 输出  a + b= 33 print('a - b=',a-b)# 输出  a - b= 13 print('a * b=',a*b)# 输出  a * b= 230 print('a / b=',a/b)# 输出  a / b= 2.3 print('a % b=',a%b)# 输出  a % b= 3 c=a+b/b*a+b# 对变量重新赋值会改变变量的值 print(c)# 输出 56.0 # 修改变量 a 、b 、ca=2b=3c=a**bprint("a ** b =",c)# 输出  a ** b = 8 a=10b=5c=a//bprint("a // b =",c)# 输出  a // b = 2

2、比较运算符

也和数学中的比较运算概念一样。

等于(==)、不等于(!=)、大于(>)小于(=)、小于等于(<=),比较运算符返回的结果为 True 或 False 。

示例:

#使用Python 自带的 IDLE 逐条练习以下代码

a = 23

b = 10

c = 0

print('a == b为', a == b) # 输出  a == b为 False

print('a != b为', a != b) # 输出  a != b为 True

print('a > b为', a > b) # 输出  a > b为 True

print('a < b为', a < b) # 输出  a < b为 False

print('a >= b为', a >= b) # 输出  a >= b为 True

print('a <= b为', a <= b) # 输出  a <= b为 False

3、逻辑运算符

用于连接比较运算符,先计算比较运算符,然后进行逻辑运算。

与(and)、或(or)、非(not),逻辑运算符返回的结果为True或False。

示例:

a=23b=10c=30print('a == b and b>c 为',a==bandb>c)# False print('a > b or c>=b 为',a>borc>=b)# True print('a < b and c>=b 为',a=b)# True print('a <= b and not a=banda>b)# True print('a > b 为',a>b)# True print('not a > b 为',nota>b)# False print('a <= b and not a=bandnota>b)# False

4、成员运算符

判断元素是否为序列中的成员,用于确认元素是否在序列中。

in:

在指定的序列中找到值返回 True,

否则返回 False。

如:x 在 y 序列中 , 如果 x 在 y 序列中返回 True。

not in:

在指定的序列中没有找到值返回 True,

否则返回 False,

与 in 是相反的。

示例:

a='a'b=2list=[1,2,3,4,5,'b','a']# 定义列表,列表使用数据结构类型 print(ainlist)# True print(anotinlist)# False print(binlist)# True print(bnotinlist)# False print(9inlist)# False print(9notinlist)# True print('c'inlist)# False print('c'notinlist)# True print('c'in'abc')# True  字符串也可以当成列表

5、身份运算符

用于比较两个对象的存储单元。

is:

判断两个标识符是否引用自同一个对象,

x is y 如果引用的是同一个对象则返回 True,

否则返回 False。

is not:

判断两个标识符是否引用自不同个对象,

与is相反。

注意:id() 函数可以帮助我们获取变量存储在内存中的地址。

a=20b=20print(id(a))print(id(b))print(aisb)# True b=12# 改变b的值 print(id(b))print(aisb)# False

输出结果:

1571488816

1571488816

True

1571488560

False

拓展:is 与 == 的区别

Python 一切皆对象,

每个对象都有唯一的身份标识(id),

而且每个对象都有自己的类型(type)和值(value)。

所以 id, type, value 是Python对象的三个基本要素。

常用的赋值(=) 操作,其实是身份标识(id)的传递,片面的理解是内存地址的传递。(因为可变数据类型()和不可变数据类型(int float string))

is比较的是id,

== 比较的是type 和 value。

当id相同时,

它的type和value肯定相同,

但当type与value相同时,

id不一定相同。

示例: type 与 value相同,id 不同

a=b=[1,2]c=[1,2]print(a==c)# True print(aisb)# True print(aisc)# False #

说明:

第一行,a 与 b 赋值时被指向了同一个id

第二行,c 再次创建一个列表,它的id也是新创建。

原因可能是可变数据类型和不可变数据类型。可查看:

version<3.5 , Python为了提高速度使用了小整数[-5, 257)和新创建的字符串加入了通用对象池(类似缓存),即启动编译器时[-5, 257)已经再内存中。

version>=3.5, 将数值加入了通用对象池,当你创建字符串和数值时,他们都会加入通用对象池。

x=100y=100# [-5, 257)的整数已在内存中定义好,引用时直接将id传递给对应的变量 print(xisy)# True i=257j=257print(iisj)# version<3.5 False, version>=3.5  True # 说明: Python 3.5 及以后的版本对此进行了优化 #3.5 及以后版本数值与字符串都加入了对象池 s='abc'r='abc'print(sisr)# True # 拓展:可用于判定变量的类型 print(type(x)isint)# True print(type(s)isstr)# True

注意:运算符的优先级,算术运算符优先,然后身份运算符,再成员运算符,最后逻辑运算符。

总结:

962f765b01b5

2018年1月19日,第一次修改,个别错别字与语法问题,代码加上注释。

2019年2月25日,第二次修改,增加思维导图

2019年7月7日,第三次修改,修改身份运算符,增加is 与 == 的区别,修改思维导图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值