python的is和is not运算符是干什么用的

作者&投稿:于伏 (若有异议请与网页底部的电邮联系)
python的is和is not运算符是干什么用的~

简单来说,python中的is与is not运算符可判断两个对象是否为同一对象。
若为同一个对象,则对象1 is 对象2为True 。
反正,若非同一个对象,则对象1 is not 对象2为True

要理解Python中的is和is not运算符,首先需要知道Python中对象包含的三个基本要素,分别是:id(身份标识)、python type()(数据类型)和value(值)。

is和==(is not和!=)都是对对象进行比较判断作用的。
但对对象比较判断的内容并不相同。

拿is和==为例,

==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等,例如下面两个字符串间的比较:
>>> a = 'iplaypython.com'
>>> b = 'iplaypython.com'
>>> a == b
True

is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同。通过对下面几个列表间的比较,你就会明白is同一性运算符的工作原理:
>>> x = y = [4,5,6]
>>> z = [4,5,6]
>>> x == y
True
>>> x == z
True
>>> x is y
True
>>> x is z
False
>>>
>>> print id(x)
3075326572
>>> print id(y)
3075326572
>>> print id(z)
3075328140

可看出前三个例子都是True,而最后一个是False。
x、y和z的值是相同的,所以前两个是True没有问题。
至于最后一个为什么是False,看看三个对象的id分别是什么就会明白了。

==比较操作符:用来比较两个对象是否相等,value做为判断因素;
is同一性运算符:比较判断两个对象是否相同,id做为判断因素。

同理,
!=比较操作符:用来比较两个对象是否不等,value做为判断因素;
is not同一性运算符:比较判断两个对象是否不同,id做为判断因素。

is是看两个标识符是不是引用自一个对象,利用id()函数就可以看的很清楚,id可以理解为得到变量的内存地址
而==是value判断,不同类型不一样,如:
>>> a = 3
>>> b = 3
>>> a == b
True
>>> id(a)
11163864
>>> id(b)
11163864
>>> a is b
True
>>> b is a
True
>>> a = [1,3]
>>> b = [1,3]
>>> a == b
True
>>> a is b
False
>>> id(a)
11794392
>>> id(b)
11813392
is not 就是is的否定,意义是一样的。

简单来说,python中的is与is not运算符可判断两个对象是否为同一对象。
若为同一个对象,则对象1 is 对象2为True 。
反正,若非同一个对象,则对象1 is not 对象2为True

要理解Python中的is和is not运算符,首先需要知道Python中对象包含的三个基本要素,分别是:id(身份标识)、python type()(数据类型)和value(值)。

is和==(is not和!=)都是对对象进行比较判断作用的。
但对对象比较判断的内容并不相同。

拿is和==为例,

==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等,例如下面两个字符串间的比较:
>>> a = 'iplaypython.com'
>>> b = 'iplaypython.com'
>>> a == b
True

is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同。通过对下面几个列表间的比较,你就会明白is同一性运算符的工作原理:
>>> x = y = [4,5,6]
>>> z = [4,5,6]
>>> x == y
True
>>> x == z
True
>>> x is y
True
>>> x is z
False
>>>
>>> print id(x)
3075326572
>>> print id(y)
3075326572
>>> print id(z)
3075328140

可看出前三个例子都是True,而最后一个是False。
x、y和z的值是相同的,所以前两个是True没有问题。
至于最后一个为什么是False,看看三个对象的id分别是什么就会明白了。

==比较操作符:用来比较两个对象是否相等,value做为判断因素;
is同一性运算符:比较判断两个对象是否相同,id做为判断因素。

同理,
!=比较操作符:用来比较两个对象是否不等,value做为判断因素;
is not同一性运算符:比较判断两个对象是否不同,id做为判断因素。

1、is和is not是看两个标识符是不是引用自一个对象,与==和!=不同,==和!=为判断值是否相同。

2、举例说明:

3、官方说明中写道:

6.10.3. Identity comparisons

The operators is and is not test for object identity: x is y is true if and only if x and y are the same object. x is not y yields the inverse truth value.

4、使用情景

当判断两个变量是不是指向同一个对象时使用is 或者 is not




python为什么命令行打印的is 和编辑器输出的不一致
这是不可能的,编辑器只是一个工具,不可能跟命令行输出的不一样,最大的可能是环境的不一样 怎么关掉打印?将打印内容重定向到\/dev\/null中,相当于直接丢弃,任何地方都找不到打印的内容 python your_script.py >> \/dev\/null & 如果又要查看打印的内容,怎么让它输出(还在运行)?python your_...

试陈述python中运算符的优先级
有些运算是互逆的,交换它们的位置不影响运算结果,所以区分它们的优先级是没有必要的,比如加和减(包括正号和负号)、乘和除、左移和右移、is与is not、in与not in。这些运算符都具有相同的优先级。当然,有些运算符交换位置会影响结果,但它们本身只是表示同一种算法的不同结果,难以区分不同的...

python中的变量与垃圾回收
python中的变量和java中的变量本质是不一样的,python中的变量实质上是一个指针(指针的大小固定的)is可以用来判断id是否相等 对于这种赋值,虽然所赋值是相同的,但是他们的id不同,即他们是不同的对象,a is b 即为false ,但是有个特例: a = 1 b = 1 时他们的id相同。其实这是python...

python中,a=10.0 b=10.0 a is b 为什么输出是false
因为a和b在id相等的情况下只有两种:(-5,256)的正负整数,以及字符串。因为有缓存的情况下会默认为同一个对象。如果不在此范围内,比如:a = 257b = 257a is bFalse而10.0属于浮点数。python对浮点数没有实现缓冲池。

python中isPalindrome的意思?
在Python中,isPalindrome通常是指检查一个字符串是否是回文。回文是指从前往后和从后往前读都一样的字符串,例如"level"和"racecar"就是回文字符串。判断一个字符串是否是回文可以通过将其反转后与原始字符串比较来实现。代码示例:```python def isPalindrome(s):return s == s[::-1]```这个...

Python是什么?它有何用途?
抓取的网页通常需要处理,比如过滤html标签,提取文本等。python的beautifulsoap提供了简洁的文档处理功能,能用极短的代码完成大部分文档的处理。其实以上功能很多语言和工具都能做,但是用python能够干得最快,最干净。Life is short, u need python.二、网站开发 那开发网站需要用到哪些知识呢?1、...

python中 (3 is 4) == 0为什么返回ture?
(3 is 4)先执行,is判断对象是否一致,3和4是常量,内存地址不一致,当然不是同一个东西,这里执行返回false,然后再判断== 0。python里面,为空,false,转化为数值,都是0。。。然后,==又是一个逻辑判断符,返回的当然是True

python常见数据类型
表示形式:用单引号双引号包含起来的符号;a = str(‘sdfsdfsdf’) 或 r’\\t\\nabcd’ 原始字符,Bytes:b’abcd’;6,字符串属于不可变数据类型,内部机制为了节省空间,相同的两个字符串表示相同的一个对象。a = ‘python’ b = ‘python’ a is b :True 二, 字符串支持的运算方法 1...

python找出100以内的质数
python找出100以内的质数方法:def is_prime(n):if n <= 1:return False,for i in range(2,n):if n%i ==0:return False, return True。Python介绍:Python由荷兰国家数学与计算机科学研究中心的吉多·范罗苏姆于1990年代初设计,作为一门叫作ABC语言的替代品,Python提供了高效的高级数据结构...

py基本语法
# 但是r'...'表示法不能表示多行字符串,也不能表示包含'和 "的字符串 # 如果要表示多行字符串,可以用'''...'''表示 print('''Python is created by "Guido". It is free and easy to learn.Let's start learn Python in imooc!'''); # 等同于'Line 1\\nLine 2\\nLine 3' # --- # Pyt...

宾县15126759817: python的is和is not运算符是干什么用的 -
后纪尿路: 简单来说,python中的is与is not运算符可判断两个对象是否为同一对象. 若为同一个对象,则对象1 is 对象2为True . 反正,若非同一个对象,则对象1 is not 对象2为True要理解Python中的is和is not运算符,首先需要知道Python中...

宾县15126759817: python的is.valid是什么意思 -
后纪尿路: is,is not判断两个对象是否为同一对象 为同一个对象a is b 为True ,不是同一对象a is not b为True

宾县15126759817: is not defined是什么意思? -
后纪尿路:当你在编写代码时,如果遇到 is not defined 的错误提示,它通常是指你在使用一个尚未定义的变量或函数.这意味着你的代码试图调用一个不存在的对象,从而导致了程序崩溃或无法正常运行.如果你遇到了这个错误,可以先检查一下代码中...

宾县15126759817: python逻辑运算操作符问题.字符串相关的! -
后纪尿路: is不是逻辑运算操作,is是通过每个对象的id来判定是否相等的.is判断的是a对象是否就是b对象,是通过id来判断的 ==判断的是a对象的值是否和b对象的值相等,是通过value来判断的 >>> x=str('1 2 3') >>> id(x) 34190944 >>> y=str('1 2 3') >>> id(y) 34011392 >>> x=str('你好啊') >>> id(x) 34238688 >>> y=str('你好啊') >>> id(y) 34190720id不同的时候,is就返回false,至于字符串何时id相等,那是python字符串的内部实现了.

宾县15126759817: 如何规范的编写python代码 -
后纪尿路: PEP8 Python 编码规范 一 代码编排1 缩进.4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格.2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号.换行点要在操作符的后边敲回车.3 类和top-level...

宾县15126759817: 数据库中的空值与NULL的区别以及python中的NaN和None -
后纪尿路: NULL表示:不可用、未赋值、不知道、不适用,它既不是0也不是空格.记住:一个数值与NULL进行四则运算,其结果是NULL 空值和NULL的区别在于,在做count计算的时候:count(field_name),field_name的值为空值也会被计算在里面(这一...

宾县15126759817: 在python 中is和= = 的区别 -
后纪尿路: Python中的对象包含三要素:id、type、value 其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值 is判断的是a对象是否就是b对象,是通过id来判断的 ==判断的是a对象的值是否和b对象的值相等,是通过value来判断的 如下代...

宾县15126759817: Python中is和==的区别 -
后纪尿路: 1is的判断标准是id,==的判断标准是内部值

宾县15126759817: python中and、or和not 三个逻辑运算符,一直理解不了,求帮助! -
后纪尿路: 'and'、'or'和'not'的优先级是not>and>or首先,'and'、'or'和'not'的优先级是not>and>or. and :x and y 返回的结果是决定表达式结果的值.如果 x 为真,则 y 决定结果,返回 y ;如果 x 为假,x 决定了结果为假,返回 x. or :...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网