如果不满足条件,请在方法内部将实例变量设置为None



我有一个方法,它遍历Excel工作表,将数据解析为一个集合。但是,如果图纸中不存在该数据,我希望它返回None,而不是空集。示例:

import xlrd
def scanSheet(self, sheet):
kwds = ['kwd1','kwd2'] #pretend these are header names for the columns
mySet = set()
if not sheet:
return self.dataset #set to None in __init__
for row in range(sheet.nrows):
for col in range(sheet.ncols):
if str(sheet.cell_value(row, col)).lower() in kwds:
sheetLength = list(range(row+1, sheet.nrows)) #ignore the header row
for idx in range(len(sheetLength):
data = sheet.cell(sheetLength[i], col).value
mySet.add(data)
self.dataset = mySet

如果有数据,它会返回一个集合,一切都很简单。如果没有数据,它将返回set(),如上所述。如果列表为空而不是set(),是否可以将其设置为None?函数开头的if语句不会触发类变量的None值的原因是Excel工作表存在,但不包含被认为感兴趣的数据。

由于空集是伪造的,您可以进行

def func(yourset):
return yourset or None

如果yourset为空(也称为Falsey(,它将返回None

print(func(set([42])))
print(func(set()))

输出:

{42} 
None

查看真实值测试

最新更新