"in" 和 "not in" 运算符用于检测成员身份。例如 "x in s" 如果 *x* 是 *s* 的成员,则返回 true,否则返回 false。"x not in s" 则返回 "x in s" 的否定结果。
成员身份测试操作
-----------------------
"in" 和 "not in" 运算符用于检测成员身份。"x in s" 如果 *x* 是 *s* 的成员,则返回 true,否则返回 false。"x not in s" 则返回 "x in s" 的否定结果。所有内置序列和集合类型都支持此功能,对于字典,"in" 操作用于检测字典是否包含特定键。对于列表、元组、集合、frozenset、字典或 collections.deque 这类容器类型,表达式 "x in y" 等同于 "any(x is e or x == e for e in y)"。
对于字符串和字节类型,"x in y" 等价于 *x* 是 *y* 的子串。等价测试为 "y.find(x) != -1"。空字符串总是被视为任何其他字符串的子串,因此 """ in "abc"" 返回 "True"。
对于自定义类,如果定义了 "__contains__()" 方法,"x in y" 如果且仅如果 "y.__contains__(x)" 返回 true。