所以我有一个对象,该对象的方法应该遍历类中定义的列表。
当我使用一个简单的 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
请您参考如下方法:
在后一种情况下,您永远不会碰到第二个元素,因为第一个元素返回 False。一个函数只能返回一次。
在您的第一个方法中,它唯一会返回的时间是它进入您的 if block 并返回 True。如果它永远不会进入 if block ,它将返回 None。
在您的第二种方法中,在第一次迭代中,'this exists' 不在 line 中,因此它返回 False 并停止迭代.
如果我理解那个函数的意图,它可能只是
def check_this(self):
return "this exists" in self.config
