代码:

def somef(*iterable_objs, positions):
    try:
        # some statement
    except TypeError:
        print('Argument \'positions\' is missing')
        return False
>>>somef([1,2,3], 'abc', (4,5,6))

TypeError被引发,因为参数positions丢失。
我想知道是否有方法处理这个异常

最佳答案

不能将*args与后面的其他位置参数一起使用;positions被视为仅限关键字的参数。因为它没有默认值,所以仍然是必需的。
请给positions一个默认值,以删除调用时始终指定该值的要求:

def somef(*iterable_objs, positions=None):
    if positions is None:
        # calculate a default instead
        positions = range(len(iterable_objs))

或者显式传入一个positions关键字参数:
somef([1,2,3], 'abc', positions=(4,5,6))

旁注:切勿使用print()来表示错误情况。最终用户不想知道程序员犯了错误,程序需要知道错误。改为使用raise SomeException()

关于python - Python中缺少关键字参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43480911/

10-09 01:12