def store(*args, name='', value=0):
if args: # args is not empty - user passed deprecated positional arguments
print(f"Warning: you passed the arguments {' and '.join(map(str, args))} as positional arguments.")
print("This is deprecated - please pass them as keyword arguments")
name = args[0]
if len(args) >= 2:
value = args[1]
store('ben', 5)
store(name='ben', value=5)
在交互式Python控制台中测试:
>>> store('ben', 5)
Warning: you passed the arguments ben and 5 as positional arguments.
This is deprecated - please pass them as keyword arguments
>>> store('ben', value=5)
Warning: you passed the arguments ben as positional arguments.
This is deprecated - please pass them as keyword arguments
>>> store(name='ben', value=5)
>>>
您可以将
*args
添加到函数的参数中,并检查其中是否包含任何参数-如果是,则用户向函数传递的位置参数应作为关键字参数传递:在交互式Python控制台中测试:
我将创建一个包含所有弃用检查逻辑的装饰器:
现在,您可以包装任何将不推荐其位置参数的函数:
相关问题 更多 >
编程相关推荐