它们是相同的概念,但不是相同的运算符。
在print(2 in some_list)
示例中,in
是一个处理几种不同情况的运算符。在Python文档的in
运营商给予的细节,我意译如下:x in y
电话y.__contains__(x)
,如果y
有一个__contains__
成员函数。否则,请x in y
尝试迭代y.__iter__()
查找x
,y.__getitem__(x)
如果__iter__
不存在,则调用。复杂性是为旧代码和新代码提供一致的成员资格测试-__contains__
如果要实现自己的类,这就是您想要的。
在for
循环中,in
仅仅是将loop- index变量与循环中的变量分开的标记。循环的Python文档for
讨论了语义,我将其解释如下:in
在循环开始时对之后的内容进行评估以提供迭代器。然后,循环主体针对迭代器的每个元素运行(禁止break
或其他控制流更改)。该for
语句不必担心__contains__
或__getitem__
。
@Kelvin有一个好处:您可以in
针对自己的新型类(class foo(object)
)更改行为: