Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python是vs==_Python_Operators - Fatal编程技术网

Python是vs==

Python是vs==,python,operators,Python,Operators,可能重复: 我对Python还是相当陌生的。我听到有人说使用是,而不是=,因为“这不是C”。但是我有一些代码x是5,它没有按预期工作 因此,遵循正确的Python/PEP风格,何时使用是,何时使用==?您应该使用=来比较两个值。您应该使用is查看两个名称是否绑定到同一个对象 您几乎不应该使用x是5,因为根据实现的不同,可能会插入小整数。这可能导致令人惊讶的结果: >>> x = 256 >>> x is 256 True >>> x =

可能重复:

我对Python还是相当陌生的。我听到有人说使用
,而不是
=
,因为“这不是C”。但是我有一些代码
x是5
,它没有按预期工作


因此,遵循正确的Python/PEP风格,何时使用
,何时使用
==

您应该使用
=
来比较两个值。您应该使用
is
查看两个名称是否绑定到同一个对象

您几乎不应该使用
x是5
,因为根据实现的不同,可能会插入小整数。这可能导致令人惊讶的结果:

>>> x = 256
>>> x is 256
True
>>> x = 257
>>> x is 257
False

这两个运算符具有不同的含义

  • is
    测试对象标识。两个操作数是否引用同一对象
  • =
    测试值的相等性。两个操作数的值是否相同

当涉及到比较
x
5
时,你总是对值感兴趣,而不是对持有值的对象感兴趣。

请参阅
is
vs
==
的解释,其中有很多很棒的链接。您天真地想使用
的唯一时间是
不进行任何测试。否则默认值为
=
你听到说“使用
,而不是
=
”的人是完全错误的,你应该接受他们给出的任何其他建议。您几乎不需要在Python中使用
is
。@RussellBorogove我在几天前阅读的一篇关于某个SO问题的评论中看到了它。当我做第二个作业,第二个
is
检查时,它仍然返回True。我正在使用Python 2.7。编辑:实际上,我使用1和2作为第一个/秒值,但随后尝试了256/257,得到了与您列出的相同的结果。这是怎么回事?@Manny D:在您使用的Python实现中,256或更少的数字会被拘留以提高效率。每次你写256,你会得到完全相同的对象。每次你写257,你都会得到一个新的,不同的对象,当然也有相同的值。但你不应该依赖这种行为,因为它在未来的版本中可能会发生变化。也许更好的例子是两个不同的对象作为相等的值进行比较。说
1
1.0
。这个例子有点深奥,因为有更明显的主流字符串在手。@MannyD你也可以用短字符串得到这种奇怪的行为,因为它们也可以被实习。您还可以通过诸如
True
False
None
之类的单例获得它。