繁体   English   中英

缺少Python中的关键字参数

[英]Missing key word argument in Python

码:

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()

正如大家已经提到的,如果你在*iterable_objs之后使用positions参数,它被视为仅限关键字的参数,但如果你改变参数的顺序,一切都会正常工作。

def somef(positions, *iterable_objs):

如果您不总是需要为其传递值,请提供默认值:

def somef(*iterable_objs, positions=None):

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM