Ключевым словом in
обычно является оператор:
print(2 in [1, 2, 3]) # True
if 3 in range(7, 20):
print('3 in range!')
Соответствует специальному методу object.__contains__
. Выражение a in b
соответствует type(b).__contains__(a)
. Обратите внимание, что a
и b
являются именами, которые ищутся.
В операторе for
in
является , а не оператором. Он является частью синтаксиса for .. in ..
и отделяет переменную цикла name от повторяемого.
for thing in range(20):
print(thing) # thing is something else on each step
Обратите внимание, что for a in b
only b
- это имя, которое ищется. a
- имя для привязки, похожее на оператор присваивания.
Синтаксис Python имеет несколько конструкций, где ведущее ключевое слово определяет значение следующих ключевых слов. Например, ключевое слово as
имеет другое значение в import
и with
:
# as aliases ExitStack
from contextlib import ExitStack as ContextStack
# as holds the result of ContextStack().__enter__()
with ContextStack() as stack:
...
Это помогает думать о таких ключевых словах не с помощью реализации , а с помощью , что означает . Например, a in b
всегда означает, что «a
содержится в b
».