[英]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.