首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单例-皮林特的比较建议

单例-皮林特的比较建议
EN

Stack Overflow用户
提问于 2022-11-26 08:10:33
回答 2查看 34关注 0票数 1

对于给定的代码

代码语言:javascript
复制
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可能会导致不正确的结果(aTrue在内存中可能有不同的地址)。为什么pylint会这么说?

不过

代码语言:javascript
复制
print(hex(id(a)))
print(hex(id(True)))

b = True
print(hex(id(b)))

部分给出了一致的结果。我不知道这样做是否普遍有效。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-26 08:23:16

TrueFalse是唯一的单子,不是不可变的。如果a的值为True,那么aTrue do具有相同的内存地址。

资料来源:佩普-0285在Python中,内置常量True和False是唯一的吗?

票数 2
EN

Stack Overflow用户

发布于 2022-11-26 08:16:30

PEP 8声称正确的方法是使用if变量,给出下面的示例

代码语言:javascript
复制
if greeting:

并声称

代码语言:javascript
复制
if greeting == True:

是错误的而且

代码语言:javascript
复制
if greeting is True:

更糟。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74580659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档