def hint1(*args):
return any(args)
该any
函数接受一个可迭代对象,True
如果其中的任何元素为真则返回。
问题是它any
需要一个可迭代的,而不是一堆单独的值。
这就是它的*args
用途。它接受您所有的参数并将它们放在一个元组中,该元组被馈送到您的单个参数中。然后,您可以将该元组传递给any
您的可迭代对象。有关更多详细信息,请参阅教程中的任意参数列表。
正如 Elazar 指出的那样,这不适用于恰好 4 个参数,它适用于任意数量的参数(甚至 0 个)。这是更好还是更差取决于您的用例。
如果您想在 3 个或 5 个参数上出错,您当然可以添加一个显式测试:
if len(args) != 4:
raise TypeError("The number of arguments thou shalt count is "
"four, no more, no less. Four shall be the "
"number thou shalt count, and the number of "
"the counting shall be four. Five shalt thou "
"not count, nor either count thou three, "
"excepting that thou then proceed to four. Six "
"is right out.")
但实际上,在这种情况下只使用静态参数列表要简单得多。