python - 如何检查是否给出了函数输入?

标签 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:

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

最佳答案

因为默认是无,你应该检查它不是那个。

if categorical_values is not None:
    ...

但是 if block 无论如何都是空操作;倒过来会更好:

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

而且您根本不需要 else block 。

关于python - 如何检查是否给出了函数输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51598961/

相关文章:

python-3.x - tensorflow 1.8 与 python 3.6 在 windows64

python - signal.setitimer 时间为零,后跟 signal.pause 不起作用

python - 如何在 python 中创建雪花时放置 if 和 then 语句

python列表转换

Python:如何访问 Linux 路径

python - Pandas read_csv 导入结果出错

python - 使用 Python 字典触发 Break 关键字

python - 按对象计算分组中子组的行数

python - Pandas ,值错误

python - 在单个 DataFrame 中查找子行而不使用循环