我正在为期中考试练习,我发现了这个:
the_cake = [1,2,[3],4,5]
a_lie = the_cake[1:4]
the_cake = the_cake[1:4]
great = a_lie
delicious = the_cake
moist = great[:-1]
在Python解释器中运行这段代码后,为什么是:
the_cake.append == a_lie.append
False
我的想法是它们是平等的方法,虽然不是“IS”,但应该满足平等。
也许由于实例化,它的计算结果为 False? 如果这是真的,那么比较时类属性的计算结果是否为 True? 这是列表对象的特殊情况吗?
后续: 根据这个: Is there a difference between `==` and `is` in Python?
“如果两个变量指向同一个对象,IS 将返回 True,如果变量引用的对象相等,则 == 返回。”
那么List类的方法是否指向“append”方法的单独实例?
所以,如果我定义一个函数 x(参数),每次调用它时,它都会是相同的,因为它是分配给不同变量的同一个对象,对吗?
然后对于一些等效的变量“参数”:
x(parameter) == x(parameter)
True
谢谢!
最佳答案
这些方法及其各自的对象实例位于不同的位置。例如我们有:
a = []
b = []
所以我们有:
>>> a.append == b.append
False
它们各自的位置如下:
>>> a.append
<built-in method append of list object at 0x7f7c7c97d560>
>>> b.append
<built-in method append of list object at 0x7f7c7c97d908>
注意不同的地址。
关于Python 列表和相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26579406/