関数のドキュメントを見つけようとしています
in
Pythonの内部。検索エンジンはのような単語では機能できないため、非常に困難です。
「in」は関数ではありません。その組み込みのキーワード。これを使用すると、ターゲットオブジェクトをトリガーできます__contains__()
http://docs.python.org/reference/datamodel.html#object。含む
>>> l = ['a']
>>> l.__contains__('a')
True
>>> 'a' in l
True
ロジックには内部で解決できるさまざまな方法があるため、「トリガーできます」と言います。
を定義しないオブジェクト
__contains__()の場合、メンバーシップテストは最初にを介して反復を試行し__iter__()、次に、を介して古いシーケンス反復プロトコルを試行します。__getitem__()
この例は、反復可能ファイルをループするために使用するのではなく、メンバーシップテストのみを対象としていることに注意してください。
ループ操作中にどのように解決されるかを説明するためinに、最初にイテレータを使用して検索します__iter__()。
l = range(5)
l.__iter__()
# <listiterator object at 0x1004e4fd0>
it = l.__iter__()
it.next()
# 0
it.next()
# 1
it.next()
# 2
オブジェクトに定義がない場合は__iter__()、古いものを使用しようとし__getitem__()ます。たとえば、。がない文字列を考えてみましょう__iter__()。これは単なるイラストです...
>>> i = 0
>>> s = "string"
>>> while i < len(s):
... print s.__getitem__(i)
... i+=1
...
s
t
r
i
n
g
同様のイテレータ(ここではジェネレータ)を表示するには:
gen = (s.__getitem__(i) for i in xrange(len(s)))
# <generator object <genexpr> at 0x1004e8780>
gen.next()
# 's'
gen.next()
# 't'
gen.next()
# 'r'
inその結果のブール値の使用については、http://docs.python.org/reference/expressions.html#membership-test-detailsを参照してください。inフォームでは、いくつかの異なる方法で使用することもできfor item in collectionます。これらの情報は、同じページで入手できます。
演算子の内部メカニズムについては、次のinページで詳しく説明しています。http: //docs.python.org/reference/datamodel.html-__contains__()その要点は、演算子をサポートするオブジェクトがブール値の使用法を提供する必要があるということです。使用法を考え__iter__() てfor item in collectionください。
「」と呼ばれていると思います__contains__。