如何使用Python检查函数参数是否存在?

3

我的代码是:

def load_data(datafile, categories=None, cat_columns=None):
    ohe_categories = 'auto'
    if categories and len(categories) > 0:
        ohe_categories = categories
    ohe = OneHotEncoder(handle_unknown='ignore', categories=ohe_categories)

categoriesNone 时,它能正常工作。但如果我传递了一些内容,就会出现错误: "最初的回答"
ValueError: The truth value of a Index is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 

我正在使用以下方式调用该函数:

training_x, training_y, categories, cat_columns = loader.load_data(
    'data/training.csv')

test_x, test_y = loader.load_data(
    'data/test.csv', categories=categories, cat_columns=cat_columns)

如何进行正确的检查?最初的回答。

1
可以添加一行代码来调用这个函数吗? - static const
看起来这是一个 Index - Shamoon
有些值并不被认为是“真实”的,仅仅因为它们存在(或者包含某些内容)。你正在传递一个Index对象,它的行为与你对于if categories...的期望不一致。尝试使用if categories != None and ...来解决这个问题。 - Error - Syntactical Remorse
2个回答

7
我建议这样做:
def load_data(datafile, categories=None, cat_columns=None):
    ohe_categories = 'auto'
    if categories is not None:
        if len(categories) > 0:
            ohe_categories = categories
    ohe = OneHotEncoder(handle_unknown='ignore', categories=ohe_categories)

6

您正在传递一个不支持转换为 bool 的值。在这种情况下,您需要明确检查该值是否不是 None

if categories is not None:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接