我曾经有一个带有一些关键字参数的函数: def foo(a=None, b=None)
在我的代码的新版本中,我不再需要关键字(b)之一,而是想要将其删除。
我应该**kwargs像这样def foo(a=None, **kwargs)向后添加功能以实现向后兼容吗?
在这种情况下,最佳做法是什么?
如果用户升级到我的软件包的新版本,我不想破坏他们的代码。
在这种情况下,最佳做法是什么?
在一个版本中,添加不赞成使用的警告而不更改功能签名。
import warnings
def foo(a=None, b=None):
if b is not None:
warnings.warn("use of b is deprecated", DeprecationWarning)
...
Run Code Online (Sandbox Code Playgroud)
您仍然有义务立即处理b,因此不要仅仅忽略它-弃用警告表示“它将消失”,而不是“它已经消失”!
在您的发行说明和文档中提到此关键字已弃用,并说它将在下一版本中删除。然后,在下一个版本中-在主要版本中,可能在次要版本中,而不是bugfix micro版本中-您可以删除它。
def foo(a=None):
...
Run Code Online (Sandbox Code Playgroud)
提及已在发行说明中删除此参数,并将其从文档中完全删除。
相关阅读:语义版本控制