相关疑难解决方法(0)

Python:`is`和`==`之间的区别?

可能重复:
Python'=='vs'是'比较字符串','有时'失败,为什么?

在Python中,这两个语句之间有什么区别:

if x is "odp":

if x == "odp":

python syntax

5
推荐指数
1
解决办法
723
查看次数

Python字符串引用

可能重复:
Python'=='vs'是'比较字符串','有时'失败,为什么?

你好.我有一个关于Python何时以及何时使用引用的工作方式的问题.

我在这里有一个例子,我理解.

a = "cat"
b = a
a is b
   True
Run Code Online (Sandbox Code Playgroud)

这是有道理的.但这里有一些我不明白的东西.

a = "cat"
b = "cat"
a is b
   True
c = 1.2
d = 1.2
c is d
    False
e = "cat"
f = "".join(a)
e is f
    False
Run Code Online (Sandbox Code Playgroud)

为什么a是b返回True而不是c是d这两种类型都是不变的吗?它在使用浮点数时起作用我只能想象它是某种优化,但我很高兴得到任何答案.

我也尝试了其他一些东西并得到了这个结果:

a = "cat"
b = "c"
c = b+"at"
a is c
    False # Why not same as setting c = "cat"
d = "cat"+""
a is d …
Run Code Online (Sandbox Code Playgroud)

python string reference immutability

5
推荐指数
1
解决办法
207
查看次数

Python:为什么运算符"is"和"=="有时可以互换为字符串?

可能重复:
Python中的字符串比较:is = = =
Python string interning 为什么使用'=='或'is'比较Python中的字符串
有时会产生不同的结果?

我偶然使用is==字符串交替使用,但我发现并不总是一样的.

>>> Folder = "locales/"
>>> Folder2 = "locales/"
>>> Folder is Folder2
False
>>> Folder == Folder2
True
>>> File = "file"
>>> File2 = "file"
>>> File is File2
True
>>> File == File2
True
>>> 
Run Code Online (Sandbox Code Playgroud)

为什么在一种情况下操作符可以互换而在另一种情况下不可以?

python operators python-2.7

5
推荐指数
1
解决办法
1242
查看次数

为什么这个字符串比较返回False?

可能重复:
Python中的字符串比较:is = ==

algorithm = str(sys.argv[1])
print(algorithm)
print(algorithm is "first")
Run Code Online (Sandbox Code Playgroud)

我正在使用参数从命令行运行它first,那么为什么代码输出:

first
False
Run Code Online (Sandbox Code Playgroud)

python string

4
推荐指数
2
解决办法
7019
查看次数

努力理解 is 运算符的特定行为

有人可以向我解释这种行为吗?

a = 'Test'
b = 'Test'
print(a is b)  # True
Run Code Online (Sandbox Code Playgroud)

我预计结果为 False,因为 a 和 b 是不同的引用。当使用相等运算符 (==) 来比较值相等时,我所期望的显示结果。

is-operator 是为了比较引用相等?还是我弄错了?

显示行为的原因是什么?

python

4
推荐指数
1
解决办法
101
查看次数

"is"关键字的类型可能等同于Python中的等于运算符

对于Python中的某些类型,is运算符似乎等同于==运算符.例如:

>>> 1 is 1
True
>>> "a spoon" is "a spoon"
True
>>> (1 == 1) is (2 == 2)
True
Run Code Online (Sandbox Code Playgroud)

然而,这并非总是如此:

>>> [] == []
True
>>> [] is []
False
Run Code Online (Sandbox Code Playgroud)

这对于诸如列表之类的可变类型是有意义的.但是,诸如元组之类的不可变类型似乎显示相同的行为:

>>> (1, 2) == (1, 2)
True
>>> (1, 2) is (1, 2)
False
Run Code Online (Sandbox Code Playgroud)

这提出了几个问题:

  1. ==/ is相关不变性等价?
  2. 上面列出的行为或实现细节是?
  3. 最重要的(并且基本上),我如何知道作业是否会导致正在制作的对象的副本,或者对它的引用?

更新:如果总是通过引用分配,为什么不打印以下内容2?:

>>> a = 1
>>> b = a
>>> a = 2
>>> b
1 …
Run Code Online (Sandbox Code Playgroud)

python identity reference immutability variable-assignment

3
推荐指数
2
解决办法
381
查看次数

Python是vs ==

可能重复:
Python中的字符串比较:is = == 运算符
何时==不等于is运算符?(蟒蛇)

我仍然是Python的新手.我听到有人说使用is,不是==因为"这不是C".但我有一些代码x is 5,它没有按预期工作.

因此,遵循正确的Python/PEP样式,何时使用is以及何时使用==

python operators

3
推荐指数
1
解决办法
2285
查看次数

关键字:is和=在python中有什么区别

根据python样式指南,python关键字is应该用于代替==运算符.

然而,它们并不总是与此处所示完全相同.为什么?实际差异是什么,适当的用法是什么?

import unittest

class testIS(unittest.TestCase):
    def test_is(self):
        self.assertEqual(1,1)

if __name__ == '__main__':
    unittest.main()
Run Code Online (Sandbox Code Playgroud)

哪个有效...但以下不...

import unittest

class testIS(unittest.TestCase):
    def test_is(self):
        self.assertEqual(1,1)

if __name__ is '__main__':
    unittest.main()
Run Code Online (Sandbox Code Playgroud)

python syntax keyword

3
推荐指数
2
解决办法
343
查看次数

在python中,为什么'is'优先于'=='来检查None中的对象

如果我写这个:

if x == None:
    x = 1
Run Code Online (Sandbox Code Playgroud)

我的pyCharm编辑器一直建议我应该使用'is'而不是'==':

if x is None:
    x = 1
Run Code Online (Sandbox Code Playgroud)

对于任何其他相等检查,pyCharm不建议使用'is',如:

if x == 2:
    x = 1
Run Code Online (Sandbox Code Playgroud)

为什么'is'操作'=='员在检查对象是否优先时优先于操作员None

为什么它只适用于None

python comparison pycharm python-2.7 nonetype

3
推荐指数
1
解决办法
830
查看次数

在比较值之前比较使用`==`比较身份?

如果我使用比较两个变量==,Python会比较身份,如果它们不相同,那么比较值?

例如,我有两个指向同一个字符串对象的字符串:

>>> a = 'a sequence of chars'
>>> b = a
Run Code Online (Sandbox Code Playgroud)

这是比较值,还是只比较ids?:

>>> b == a
True
Run Code Online (Sandbox Code Playgroud)

首先比较身份是有意义的,我想是这样的,但我还没有在文档中找到任何支持这一点的东西.我得到的最接近是这样:

x==y 电话 x.__eq__(y)

这并没有告诉我在打电话之前是否做了什么x.__eq__(y).

python identity equality-operator

3
推荐指数
1
解决办法
116
查看次数