当前位置: 首页 > 编程笔记 >

Python通过`is`与`==`比较

伯英锐
2023-03-14
本文向大家介绍Python通过`is`与`==`比较,包括了Python通过`is`与`==`比较的使用技巧和注意事项,需要的朋友参考一下

示例

常见的陷阱是混淆相等比较运算符is和==。

a == b比较的值a和b。

a is b将比较认同的a和b。

为了显示:

a = 'Python is fun!'
b = 'Python is fun!'
a == b # 返回True
a is b # 返回False

a = [1, 2, 3, 4, 5]
b = a      # b引用a
a == b     # 真正
a is b     # 真正
b = a[:]   # b现在引用a的副本
a == b     # 真正
a is b     # 错误[!!]

基本上,is可以视为的简写。id(a) == id(b)

除此之外,还有一些运行时环境的怪癖使事情变得更加复杂。True与相比,短字符串和小整数将返回is,这是因为Python机器试图为同一对象使用更少的内存。

a = 'short'
b = 'short'
c = 5
d = 5
a is b # 真正
c is d # 真正

但是较长的字符串和较大的整数将分别存储

a = 'not so short'
b = 'not so short'
c = 1000
d = 1000
a is b # 假
c is d # 假

您应该is用来测试None:

if myvar is not None:
    # 不无
    pass
if myvar is None:
    # 没有
    pass

的用途is是测试“前哨”(即唯一对象)。

sentinel = object()
def myfunc(var=sentinel):
    if var is sentinel:
        # 没有提供价值
        pass
    else:
        # 提供了价值
        pass
           

 类似资料:
  • 问题内容: A = 314 结果: 我知道在if语句中使用两个“ =”和“ is”是不正常的。但是我想知道Python解释器如何解释该语句。 表达式是同时解释还是短路解释? 问题答案: 您遇到的事情称为 运算符链接 。 从比较文档: 可以任意链接比较,例如 与等效,不同之处在于比较仅被评估一次(但是在两种情况下,如果发现错误,则根本不评估)。 强调我的。 因此,这意味着将被解释为,仅此而已。 更一

  • 问题内容: 我正在使用Python2.x。 比较时我的编辑会警告我,但使用时不会警告。 我在Python Shell中进行了测试,并确定两者都是有效的语法,但我的编辑器似乎在说这是首选。 是这样吗?如果是,为什么? 问题答案: 摘要: 使用时要核对对象的身份(如检查,看看是否是)。使用时要检查的平等(例如是等于?)。 说明: 你可以在其中返回的自定义类True 例如: is检查对象身份。只有1个对

  • 当我比较,但是当我使用。 我在pythonshell中做了一个测试,确定两者都是有效语法,但我的编辑器似乎在说是首选。 情况是否如此,如果是,原因何在?

  • 我试图通过API访问XML文档。当我尝试用python连接时,我得到一个403状态代码。但是,当我将链接粘贴到chrome浏览器中时,数据将按其应有的方式显示。我知道我可能需要在Python中为我的请求添加一些头,但我不知道如何这样做。 我可以在chrome中获取标题,但不确定需要添加哪些标题到请求中 接受:text/html、application/xhtml-xml、application/x

  • is是对比地址,==是对比值

  • 问题内容: 我试图以递归方式将本地主机中的目录与远程linux机器中的目录进行比较。但是,当我执行下一条命令时: 说这是行不通的: 差异:ssh admin@10.0.0.10:/ home / admin:没有这样的文件或目录 递归比较目录内容的正确方法是什么? 提前致谢 问题答案: 如果不需要区分文件中的详细信息,只需获取目录/文件名的差异,然后尝试以下操作: (注意:需要设置“没有密码的SS