[英]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.