在Python中,我可以看到关键字in
可以有效地用于检查子字符串,如:str1 in str2
无论如何都要执行in
的反转版本,就像有(假设)关键字contain
来表示str2 contain str1
一样?这是为了编写代码的流程,如:
if str contain "foo":
return 1
elif str contain "bar":
return 2
elif str contain "boo":
return 3
elif str contain "far":
return 4
else
return 5
就个人而言,(假设)上面的代码比使用in
更具可读性:
if "foo" in str:
return 1
elif "bar" in str:
return 2
elif "boo" in str:
return 3
elif "far" in str:
return 4
else
return 5
答案 0 :(得分:5)
事实上,有一种__contains__
方法与您描述的方法非常相似:
>>> 'the quick brown fox'.__contains__('quick')
True
还有一个没有下划线的contains函数:
>>> from operator import contains
>>> contains('the quick brown fox', 'quick')
True
答案 1 :(得分:1)
你可以使用{em>在失败时退回-1的str.find
方法:
if str.find('foo') != -1:
# do something
实施例:
"asdfoo".find('foo')
# 3
"asdfo".find('foo')
# -1
答案 2 :(得分:0)
建议的包含关键字不会为该语言添加任何功能。也许您发现它更具可读性,但 in 运算符存在于其他语言中。另外,请注意“包含”是一个动词,当它没有正确共轭时,它读得不那么好。
考虑将反转原则应用于其他上下文,例如赋值:为了更具可读性,我们应该计算左边的值,然后在右边给出目的地。