arguments - Python 中可选参数的默认值 :

标签 arguments 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,我们返回一些数据数组但删除 NaN,如果是其他情况,我们替换 NaN s 与参数。

问题是,我可能想用 False 替换 NaN。或其他任何东西,为此。最pythonic的方法是什么?这:

def get_data(**kwargs):
    if "replace_nan" in kwargs:
       ...

有效,但在语义上很丑陋(因为我们真的只对一个关键字参数感兴趣,replace_nan)如何处理这种情况有什么建议吗?

最佳答案

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

如果您也需要允许 None,请使用虚拟对象:

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

关于arguments - Python 中可选参数的默认值 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10599346/

相关文章:

Python 搜索带有键值的 Json

python - 保存后字段归零

升级到 Python 3.5.2 后,Python jsonrpclib 无法工作

javascript - 记录将对象作为参数的 JS 函数

c++ - 具有2个模板参数的C++类,具有1个参数的函数

python - PyQt4 - QString 对象没有属性 'isEmpty' '

python - 将 Cloudfront 与 Django S3Boto 一起使用

ruby - 获取 `initialize' : wrong number of arguments(1 for 0) (ArgumentError) for simple ruby app

c - 为什么要将程序名称作为参数传递给 main?

c++ - 何时将指向指针的指针作为参数传递给 C++ 中的函数?