检测是否提供了可选参数(可能不包含任何参数)

2024-10-01 13:35:20 发布

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

有没有比下面的示例更好的方法来检测是否提供了可选参数?即使提供了None,我们也希望返回它,而不是引发异常。你知道吗

预期结果:

>>> get_value('key-exists-not')  # default not provided
KeyError
>>> get_value('key-exists-not', None)  # should support arg
None
>>> get_value('key-exists-not', default=None)  # as well as kwarg
None
>>> get_value('key-exists-not', default='')
''

这是最好的/推荐的方法吗?你知道吗

def get_value(key, default='somerubbishthatwillneverbeused'):
    try:
        return _data[key]
    except KeyError:
        if default != 'somerubbishthatwillneverbeused':
            return default
        raise

Tags: 方法keynonedefault示例参数getreturn
2条回答

两种选择

def foobar (**kwargs):
    if 'some_key' in kwargs:
        # it was provided

另一个呢

default = object()
def foobar (some_key=default):
    if some_key is default:
        # some_key not specified

使用sentinel值;它是一个私有的单例,您可以使用is再次测试它:

_sentinel = object()
def get_value(key, default=_sentinel):
    if default is _sentinel:
         # no other value provided

相关问题 更多 >