gpt4 book ai didi

Python:如果不是 val,vs 如果 val 是 None

转载 作者:IT老高 更新时间:2023-10-28 21:35:13 25 4
gpt4 key购买 nike

我一直以 if not value 的风格进行编码,但是,一些指南引起了我的注意,虽然这种风格有效,但它似乎有两个潜在的问题:

  1. 它不完全可读; if value is None 肯定更容易理解。
  2. 这可能会在以后产生影响(并导致细微的错误),因为像 []0 这样的东西也会评估为 False

我也开始将这个想法应用到其他比较中,例如:

  • if not value vs if value is False
  • if not value vs if value is []

列表也是如此......

问题是,你在原则上走了多远?在保证代码安全的同时,在哪里划清界限?

无论如何我都应该使用 if value is None 样式吗?

最佳答案

如果您想要的话,请使用与 None 的比较。如果您只想检查该值是否被视为假(空列表、无、假),请使用“如果不是值”。

我发现“if not value”看起来更简洁和 Pythonic。

另外,请注意列表。在比较空列表时不应使用 is。如果您知道您正在获取列表,请使用 if <list>检查它是否有任何内容(或 len())。尝试在解释器中输入:

>>> a = []
>>> a is []
False

这是因为您刚刚创建的临时列表在内存中的地址与存储在“a”中的地址不同。 None、False 或 True 看不到这一点,因为这些都是单例值(它们都引用内存的同一部分),因此使用 'is' 关键字有效。

您还会发现 CPython 实习生字符串,因此以下工作。

>>> 'a' is 'a'
True

你不应该依赖这个。这是一个实现细节,并没有指定适用于每个版本的 Python。

关于Python:如果不是 val,vs 如果 val 是 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7152441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com