Python中可选参数的默认值:

2024-04-20 00:19:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下方法:

def get_data(replace_nan=False):
    if replace_nan is not False
        data[numpy.isnan(data)] = replace_nan
        return data
    else:
        return data[~numpy.isnan(data)]

因此,如果replace_nan为False,我们返回一些数据数组,但删除NaNs,如果是其他的,我们用参数替换{}s。在

{{cd2>可能要用{cd2>替换^问题。或者别的什么,为了这个。最具Python式的方法是什么?这个:

^{pr2}$

很有用,但是语义上很难看(因为我们只对一个关键字参数感兴趣,replace_nan)有什么建议可以处理这种情况吗?在


Tags: 方法numpyfalsedata参数getreturnif
3条回答

通常人们使用None作为默认值,然后检查is not None。在

如果还需要允许None,请使用一个虚拟对象:

__default = object()
def get_data(replace_nan=__default):
    if replace_nan is __default:
        ...

numpy将数组内的False求值为0:

    >>>np.array([False,True,2,3])
    array([0, 1, 2, 3])

所以这可能不是你想要的。在

^{pr2}$

在纽比。在哪里函数用索引构建一个数组,其中您的项是NaN。在那里,它用replace_nunan替换条目,在其他任何地方它都保留条目。在

manual page

numpy.where(condition[, x, y])
Return elements, either from x or y, depending on condition.

我想在ThiefMaster的答案下面加上注释,但注释中不允许有格式,所以…:

如果您担心混淆名称空间,可以在定义函数后使用一些技巧-del变量。在

__default = object()
def get_data(replace_nan=__default, __default=__default):
  if replace_nan is __default:
    ...
del __default

或者:

^{pr2}$

相关问题 更多 >