提问者:小点点

如果不满足条件,则在方法内部将实例变量设置为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工作表,但不包含被认为感兴趣的数据。


共1个答案

匿名用户

因为空集是假的,你可以这样做

def func(yourset):
    return yourset or None

如果yourset为空(又称falsey)-它将返回none

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

输出:

{42} 
None

参见真值测试

相关问题