如何检查是否输入了功能?

时间:2018-07-30 17:00:35

标签: python python-3.x pandas function

请考虑接受两个参数的函数:seriescategorical_values。其目标是获取series,使其分类,然后将原始系列的每个元素与分类的对应元素一起打印。但是,如果已经将categorical_values作为输入传递给函数,则跳过分类阶段,并且该函数仅打印传递的seriescategorical_values对。

def my_function(series, categorical_values = None):

    if categorical_values: #meant to mean "if this argument is passed, just use it"
        categorical_values = categorical_values

    else: #meant to mean "if this argument is not passed, create it"
        categorical_values= pd.qcut(series, q = 5)

    for i,j in zip(series, categorical_values):
        print(i, j)

但是,在下面传递categorical_values

my_function(series, pd.qcut(series, q = 5))

导致:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

导致此错误的代码行是第一行:if categorical_values:

检查函数参数是否已传递的正确方法是什么?

1 个答案:

答案 0 :(得分:6)

由于默认值为“无”,因此您应该检查它是否为非。

if categorical_values is not None:
    ...

但是,如果block仍然是禁止操作的话;最好将其反转:

if categorical_values is None:
    categorical_values = pd.qcut(series, q = 5)

,您根本不需要else块。