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

时间:2015-06-26 12:34:00

标签: python oop object if-statement for-loop

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

当我使用简单的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

2 个答案:

答案 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