所以我有一个对象,该方法应该迭代在类中定义的列表。
当我使用简单的if语句时,我得到了预期的结果,但是,当我添加一个else语句时,我得到了奇怪的结果。
Class SomeClass(object):
def __init__(self):
self.config = ['something', 'this exists', 'some more stuff']
def check_this(self):
for line in self.config:
if "this exists" in line:
return True
一旦到达列表中的第二个元素,上面的代码就会返回True。
如果我将代码更改为以下内容。该方法返回False。
Class SomeClass(object):
def __init__(self):
self.config = ['something', 'this exists', 'some more stuff']
def check_this(self):
for line in self.config:
if "this exists" in line:
return True
else:
return False
我必须在这里遗漏一些东西。 MAC OS X上的Python 2.7.6
答案 0 :(得分:5)
在后一种情况下,你永远不会碰到第二个元素,因为第一个元素会返回arr_Hard
。一个函数只能arr_Hard
一次。
在您的第一种方法中,它返回的唯一时间是它是否进入False
块并返回return
。如果它永远不会进入if
块,它将返回True
。
在第二种方法中,在第一次迭代中,if
不在None
中,因此返回'this exists'
并停止迭代。
如果我理解该功能的意图,那可能只是
line
答案 1 :(得分:2)
我认为这就是你想要的:
Class SomeClass(object):
def __init__(self):
self.config = ['something', 'this exists', 'some more stuff']
def check_this(self):
if "this exists" in self.config:
return True
else:
return False