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

jbb*_*med 3 python syntax keyword

根据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)

ham*_*ene 7

==测试平等.两个不相同的对象可以相等.

is 身份测试,即两者是否都指向同一个对象.


akh*_*hab 5

将返回真,如果两个变量指向同一个对象,==如果由变量所提到的对象是相等的.

>>> a = [1, 2, 3]
>>> b = a
>>> b is a 
True
>>> b == a
True
>>> b = a[:]
>>> b is a
False
>>> b == a
True
Run Code Online (Sandbox Code Playgroud)