I have the following function:
def foo(**kwargs):
if not kwargs:
# No keyword arguments? It's all right. Set defaults here...
elif ('start_index' or 'end_index') in kwargs:
# Do something here...
else:
# Catch unexpected keyword arguments
raise TypeError("%r are invalid keyword arguments" % (kwargs.keys())
问题:
我想确保只有start_index
或end_index
是有效的关键字参数。任何其他参数都会引发错误,即使与有效参数混合使用也会出错。有没有特定方法可以确保只接受start_index
或end_index
?我在寻找一种特定方法,但不知道该如何搜索。我也不确定是否应该使用if-elif-else
结构来实现。
('start_index' or 'end_index') in kwargs
不会像你预期的那样工作?string1 or string2
会返回其中一个字符串(很可能是string1
),所以你的示例将 永远 不会检查'end_index' in kwargs
。类似于for kw in ('start_index', 'end_index'): if kw in kwargs ...
的方式可以解决问题。 - Tobias Kienzler