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

2024-03-29 06:42:29 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个对象,它有一个方法,应该遍历类中定义的列表。你知道吗

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


Tags: 方法inselfconfigtrue列表returnif
2条回答

在后一种情况下,您从未命中第2个元素,因为第1个元素返回False。一个函数只能return一次。你知道吗

在第一个方法中,它返回的唯一时间是进入if块并返回True。如果它从未进入if块,它将返回None。你知道吗

在第二个方法中,在第一次迭代中,'this exists'不在line中,因此它返回False并停止迭代。你知道吗

如果我理解这个功能的意图,它可能只是

def check_this(self):
    return "this exists" in self.config

我想这就是你想要的:

 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

相关问题 更多 >