问题:Python:假对 0

在 PHP 中,您使用===表示法来测试与10不同的TRUEFALSE

例如if FALSE == 0返回TRUE,if FALSE === 0返回FALSE。因此,在以 0 为基数进行字符串搜索时,如果所讨论的子字符串的位置正好在开头,则会得到0,PHP 可以将其与FALSE区分开来。

有没有办法在 Python 中做到这一点?

解答

在 Python 中,

  • is运算符测试身份(False is False,0 is not False)。

  • ==运算符,用于测试逻辑相等(以及0 == False)。

从技术上讲,这些都不完全等同于 PHP 的===,后者比较逻辑相等和类型 - 在 Python 中,就是a == b and type(a) is type(b)

is==之间的一些其他区别:

可变类型文字

  • {} == {},但{} is not {}(同样适用于列表和其他可变类型)

  • 但是,如果a = {},则a is a(因为在这种情况下它是对同一实例的引用)

字符串

  • "a"*255 is not "a"*255",但在大多数实现中是"a"*20 is "a"*20,这取决于 Python 如何处理字符串实习。但是,不能保证这种行为,在这种情况下您可能不应该使用is"a"*255 == "a"*255并且几乎总是使用正确的比较。

数字

  • 12345 is 12345但在大多数实现中12345 is not 12345 + 1 - 1类似。您几乎总是希望对这些情况使用相等性。
Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐