代码:
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/