生活不易 我用python程序员

操作符详解之成员测试(Python)

2018-07-29  本文已影响1人  import_hello

转载请注明出处:https://www.jianshu.com/u/5e6f798c903a

参考文档:Membership test operations

成员测试使用 innot in 作为操作符。如果 x 是 s 中的一员,x in s 便会返回 True ;否则返回 Falsex not in sx in s 的真值相反。所有内置序列(sequences)和集合(set)类型都支持成员测试;字典也支持该操作,不过字典将键(key)作为测试对象。对于容器类型(如 list、tuple、set、frozenset、dict 或 collections.deque),表达式 x in y 相当于 any(x is e or x == e for e in y)

另外,对于 string 和 bytes 类型,仅当 x 是 y 的子串(substring)时,x in y 会返回 True。在这种情况下,成员测试等效于 y.find(x) != -1。由于空字符串被视作任何字符的子串,所以 "" in "abd" 将会返回 True

对某个对象进行成员测试时,依据对象所持方法的不同,可分为如下三种情况:

小结:综合以上三种情况,可见成员测试会优先使用 __contains__,如果没有定义该方法才会使用 __iter__(),如果前面两个方法都未定义才会尝试 __getitem__

上一篇下一篇

猜你喜欢

热点阅读