Lau*_*RTE 4 python warnings deprecated
之间有什么区别DeprecationWarning,PendingDeprecationWarning和FutureWarning?我在Python 3 文档中看到,目标“受众”一词存在差异,尤其是我不了解“开发人员”和“最终用户”之间的区别。这个概念对我来说有点模糊。谁能解释一下并举例说明?
我做了一个小表格来总结用例:
+---------------+---------------------------+---------------+
| | Developers | End Users |
+---------------+---------------------------+---------------+
| Now | DeprecationWarning | ??? |
| In the future | PendingDeprecationWarning | FutureWarning |
+---------------+---------------------------+---------------+
Run Code Online (Sandbox Code Playgroud)
是否有针对最终用户的“弃用警告”?
如果我开发自己的库。使用这些警告是个好主意还是我应该使用其他东西的子类?在哪个用例中?
小智 6
听众问题主要与这样一种想法有关,即某些 Python 被编写为一个库,旨在供编写 Python 脚本的其他人使用,而某些 Python 则被编写为旨在供可能不会使用的人使用的应用程序知道任何编程。
您所指的具体描述是 Python 3.7 中的更改您可以在https://www.python.org/dev/peps/pep-0565/阅读更改的完整描述,但这里有一个特别相关的部分,示例用例:
这将给出以下三个不同类别的向后兼容性警告,针对三个不同的目标受众:
- PendingDeprecationWarning:所有代码默认隐藏。目标受众是对确保其软件的未来兼容性有积极兴趣的 Python 开发人员(例如,具有特定支持义务的专业 Python 应用程序开发人员)。
- DeprecationWarning:默认情况下报告直接在
__main__模块中运行的代码(因为此类代码被认为不太可能具有专用测试套件),但默认情况下隐藏其他模块中的代码。目标受众是 Python 开发人员,他们面临升级依赖项(包括升级到 Python 本身)破坏他们的软件的风险(例如,开发人员使用 Python 编写脚本环境,而其他人可以控制依赖项升级的时间)。- FutureWarning:默认为所有代码报告。目标受众是使用 Python 编写的应用程序的用户,而不是其他 Python 开发人员(例如,警告有关在配置文件格式中使用已弃用设置的警告)。
我认为您的表格不太准确——FutureWarning据我所知,应该用于现在已弃用的内容。据我了解,这DeprecationWarning意味着“现在更改您的代码,否则它很快就会崩溃”,PendingDeprecationWarning意味着“您最终将不得不更改某些内容”,并FutureWarning意味着“您使用它的方式不正确,并且以后可能会失败。”
FutureWarning还用于警告您在未来的更新中事情不会表现相同,即使它们将是有效的代码。这可能与开发人员和用户都相关。例如,FutureWarning我在实践中看到的许多s 是一些便利函数的含义可能会改变的事情(就像==两个数组为每个元素返回一个 True/False 数组,或者它是否返回单个 True/False , 只有当所有元素都相等时才为真?当 numpy 想要改变这一点时,他们会做一个FutureWarning)
在开发你的库时,一定要使用这些或它们的子类。DeprecationWarning如果存在潜在问题,使用您的库编写代码的人会期望他们的集成测试发出s(更准确地说,测试工具可能会专门寻找这些)。
| 归档时间: |
|
| 查看次数: |
627 次 |
| 最近记录: |