将python条件链接在一起不会';I don’我没有按预期工作

将python条件链接在一起不会';I don’我没有按预期工作,python,Python,我试图测试数组中是否存在多个值中的一个,但它的行为与预期不符 def valueInList(myList = "abcdefgh"): if "a" or "b" in myList: return True else: return False 例如: >>> valueInList("abc") #should be True True >>> valueInList("def") #should be

我试图测试数组中是否存在多个值中的一个,但它的行为与预期不符

def valueInList(myList = "abcdefgh"):
    if "a" or "b" in myList:
        return True
    else:
        return False
例如:

>>> valueInList("abc") #should be True
True
>>> valueInList("def") #should be False
True
为什么这个条件不起作用?

Python不使用自然语言 虽然一个人可以理解myList中的“a”或“b”,但Python解释器对它的理解非常不同。添加括号有助于说明这一点,因为接下来的两个语句是等效的:

"a"   or  "b" in myList
("a") or ("b" in myList)

因此,条件将始终返回true,因为“a”是一个真实值,也就是说它不是False、0、空字符串或空列表。

我添加了这一点,作为我经常看到的许多“为什么python不理解人类可读的命令”问题的总括。没有必要提出新问题,因为这可能是最常见的Python错误概念,并且已经有很多重复。