... is
關鍵字可用於字符串中的相等性。如何在Python中實現'is'關鍵字?
>>> s = 'str'
>>> s is 'str'
True
>>> s is 'st'
False
我都嘗試__is__()
和__eq__()
,但他們沒有工作。
>>> class MyString:
... def __init__(self):
... self.s = 'string'
... def __is__(self, s):
... return self.s == s
...
>>>
>>>
>>> m = MyString()
>>> m is 'ss'
False
>>> m is 'string' # <--- Expected to work
False
>>>
>>> class MyString:
... def __init__(self):
... self.s = 'string'
... def __eq__(self, s):
... return self.s == s
...
>>>
>>> m = MyString()
>>> m is 'ss'
False
>>> m is 'string' # <--- Expected to work, but again failed
False
>>>
我已經在過去該字符串實習可能發生的計算運行時間和輸入值,如果他們足夠短的觀察。 'a'* 100不是'a'* 100;但'a'* 20是「a」* 20.與此同時'a'.upper()不是'a'.upper()。 Jython,IronPython,PyPy和其他人可能會更積極地實習。 簡而言之,它取決於實現。正如你所說,在字符串中調用'intern()'函數將「強制」一個字符串與任何等價的和以前的intern()'字符串具有相同的對象標識。但是,我不知道測試字符串標識的有效用例。 (可能的表現)。 – 2010-06-08 09:16:55