2

関数のドキュメントを見つけようとしています

in

Pythonの内部。検索エンジンはのような単語では機能できないため、非常に困難です。

4

3 に答える 3

7

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'
于 2012-06-12T21:43:54.027 に答える
4

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ください。

于 2012-06-12T21:44:27.473 に答える
1

「」と呼ばれていると思います__contains__

于 2012-06-12T21:47:13.743 に答える