问题描述
在 PHP 中,您使用 === 表示法来测试 TRUE 或 FALSE 与 1 或<代码>0代码>.
In PHP you use the === notation to test for TRUE or FALSE distinct from 1 or 0.
例如 if FALSE == 0 返回 TRUE,if FALSE === 0 返回 FALSE.因此,在以 0 为基数进行字符串搜索时,如果相关子字符串的位置正好在开头,您会得到 0,PHP 可以将其与 FALSE 区分开来.
For example if FALSE == 0 returns TRUE, if FALSE === 0 returns FALSE. So when doing string searches in base 0 if the position of the substring in question is right at the beginning you get 0 which PHP can distinguish from FALSE.
有没有办法在 Python 中做到这一点?
Is there a means of doing this in Python?
推荐答案
在 Python 中,
In Python,
is 运算符测试身份(False is False,0 is not False).
The is operator tests for identity (False is False, 0 is not False).
== 运算符,用于测试逻辑相等(因此 0 == False).
The == operator which tests for logical equality (and thus 0 == False).
从技术上讲,这些都不完全等同于 PHP 的 ===,后者比较逻辑相等和类型 - 在 Python 中,a == b 和 type(a) 是类型(b).
Technically neither of these is exactly equivalent to PHP's ===, which compares logical equality and type - in Python, that'd be a == b and type(a) is type(b).
is 和 == 之间的一些其他区别:
Some other differences between is and ==:
- {} == {},但 {} 不是 {}(列表和其他可变类型也是如此)
- 但是,如果 a = {},则 a 是一个(因为在这种情况下它是对同一个实例的引用)
- {} == {}, but {} is not {} (and the same holds true for lists and other mutable types)
- However, if a = {}, then a is a (because in this case it's a reference to the same instance)
- "a"*255 不是 "a"*255",但在大多数实现中,"a"*20 是 "a"*20,因为如何Python 处理字符串实习.但是,这种行为并不能保证,在这种情况下您可能不应该使用 is."a"*255 == "a"*255 并且几乎总是适合使用的比较.
- "a"*255 is not "a"*255", but "a"*20 is "a"*20 in most implementations, due to how Python handles string interning. This behavior isn't guaranteed, though, and you probably shouldn't be using is in this case. "a"*255 == "a"*255 and is almost always the right comparison to use.
- 12345 is 12345 但在大多数实现中 12345 不是 12345 + 1 - 1,类似地.您几乎总是希望在这些情况下使用相等.
- 12345 is 12345 but 12345 is not 12345 + 1 - 1 in most implementations, similarly. You pretty much always want to use equality for these cases.