def my_max(*args, **kwargs):
'''Emulate the built-in max, including the keyword-only key argument.'''
key = kwargs.pop('key', None)
if kwargs:
raise TypeError('my_max() got an unexpected keyword argument {!r}'.format(next(iter(kwargs))))
if key is None:
# max doesn't support key=None
return max(*args)
else:
return max(*args, key=key)
python2不支持只支持关键字的参数。如果您真的希望Python 2函数具有只能通过关键字传递的参数,则需要使用
**kwargs
并亲自验证关键字参数:这在python2中不受支持,其中
*args
必须出现在函数调用签名中的任何命名/默认参数之后。在适当的方法是升级到python3,在那里它是受支持的。在
在Python2中,所有位置参数都必须在任何
*args
参数之前。在Python3中,您当前的语法是合法的,将option
创建为“仅限关键字”参数。在所以,你可以改变论点的顺序:
如果您想提供任何其他参数,这将需要您提供一个
option
参数,这可能不是您想要的。在另一个选择是使用
^{pr2}$**kwargs
语法来捕获传递给函数的关键字参数。您可以检查它是否有option
(而不是任何其他意外的关键字),而无需将其命名为位置参数:或者可以升级到python3。在
相关问题 更多 >
编程相关推荐