-2
通常我會檢查字符串中是否存在子字符串。在Python,我可以做,要麼使用__contains__()
方法或使用in
操作,如下圖所示:在Python中,爲什麼contains()是str對象的隱藏方法?
模式1:
string1 = r'c:\users\username\documents\code\crime_data.csv'
print(string1.__contains__('username'))
模式2:
print('username' in string1)
無論是對我工作得很好,但我想知道爲什麼__contains__
隱藏的方法,如果模式2首選超過1,如果是的話,爲什麼?其他編程語言(如C#)在其標準庫中有一個String.contains()
方法。
爲什麼要編寫'x.contains(y)'而不是''在x''中? '__contains__'是一種神奇的方法,原因與你寫'x + y'而不是'x .__ add __(y)'的原因相同,即在有中綴操作符可用的情況下,它通常比函數調用。 – BrenBarn
當你在something2中調用'something'時,Python在'something2'對象中尋找一個魔術'__contains__'方法並調用它(並且對於一些內建函數,解釋器甚至可以優化掉這樣的調用)。 'in'只是一個語法糖,可以讓代碼更具可讀性。至於爲什麼它是一個單獨的方法 - 所以你可以創建自己的類型,可以與其他類型進行比較。 – zwer
進一步說明BrenBarn所說的'in'運算符也比方法調用快。 – miradulo