所以我想我在正在处理的代码中发现了一个错字。我以为'not'将对字符串“ eta”进行操作,并使其为False,并且False不在列表中,因此不应该打印任何内容-但是在以下两种情况下都将打印“ Eta not found”。我想这与两个语句相等的评估顺序有关,对吧?
if not "eta" in ["alpha", "beta", "gamma"]:
print ("Eta not found")
if "eta" not in ["alpha", "beta", "gamma"]:
print ("Eta not found")
答案 0 :(得分:3)
在两种情况下结果都是相同的,因为同一语句的语法略有不同应会导致结果相等,对吗?还有
if not "eta" in ["alpha", "beta", "gamma"]:
与以下相同:
if not ("eta" in ["alpha", "beta", "gamma"]):
等效于:
if ("eta" not in ["alpha", "beta", "gamma"]):
答案 1 :(得分:2)
in
比not
具有higher precedence,因此not x in a
的意思是not (x in a)
。不过请记住两件事。
not in
本身就是新运算符,而不仅仅是not
和in
的结合。实际上,不可能:not
运算符必须后面跟一个表达式,而不是另一个运算符。not x in a
转换为x not in a