不理解for循环中的if/else行为

Per*_*pus 1 python oop for-loop if-statement object

所以我有一个对象,该方法应该迭代在类中定义的列表.

当我使用简单的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
Run Code Online (Sandbox Code Playgroud)

一旦到达列表中的第二个元素,上面的代码就返回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
Run Code Online (Sandbox Code Playgroud)

我必须在这里遗漏一些东西.MAC OS X上的Python 2.7.6

Cor*_*mer 5

在后一种情况下,你永远不会碰到第二个元素,因为第一个元素会返回False.一个功能只能return一次.

在你的第一种方法中,它返回的唯一时间是它是否进入你的if区块并将返回True.如果它永远不会进入if阻止,它将返回None.

在第二种方法中,在第一次迭代中,'this exists'不是line这样,它返回False并停止迭代.

如果我理解该功能的意图,它可能就是这样

def check_this(self):
    return "this exists" in self.config
Run Code Online (Sandbox Code Playgroud)