簡體   English   中英

不了解for循環中的if / else行為

[英]Don't understand if/else behavior within 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

在后一種情況下,您永遠不會點擊第二個元素,因為第一個元素返回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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM