对于给定的代码
def greater(n):
if n > 3:
res = True
else:
res = False
return res
a = greater(5)
print(hex(id(a)))
print(hex(id(True)))
b = True
print(hex(id(b)))
if a == True:
print('yes')
else:
print('no')pylint建议pylint_example.py:16:4: C0121: Comparison 'a == True' should be 'a is True' if checking for the singleton value True, or 'a' if testing for truthiness (singleton-comparison)
a is True将检查地址和价值和I 不能假定不可变变量具有相同的地址。
因此,将a == True更改为a is True可能会导致不正确的结果(a和True在内存中可能有不同的地址)。为什么pylint会这么说?
不过
print(hex(id(a)))
print(hex(id(True)))
b = True
print(hex(id(b)))部分给出了一致的结果。我不知道这样做是否普遍有效。
发布于 2022-11-26 08:23:16
True和False是唯一的单子,不是不可变的。如果a的值为True,那么a和True do具有相同的内存地址。
发布于 2022-11-26 08:16:30
https://stackoverflow.com/questions/74580659
复制相似问题