python3 deprecated装饰器

# XXX
# XXX TALK ABOUT PEP 702
# XXX https://peps.python.org/pep-0702
# XXX

from deprecated import deprecated


@deprecated("Adding ain't cool no more", version="1.0.0")
def add(x: int, y: int) -> int:
    return x + y


@deprecated("减法已经过时了", version="1.0.0")
def sub(x: int, y: int) -> int:
    return x - y

if __name__ == "__main__":
    print(add(5, 7))  
    print(sub(7, 5))  

代码解析及 PEP 702 简介

代码解析:

from deprecated import deprecated

@deprecated("Adding ain't cool no more", version="1.0.0")
def add(x: int, y: int) -> int:
  return x + y

if __name__ == "__main__":
  print(add(5, 7))
  1. 导入:

    • from deprecated import deprecated: 导入 deprecated 库中的 deprecated 装饰器。该装饰器用于标记函数或方法已过时。
  2. 过时函数:

    • @deprecated("Adding ain't cool no more", version="1.0.0"): 使用 deprecated 装饰器装饰 add 函数。该装饰器接受两个参数:

      • 信息 (字符串): 函数被调用时显示的警告信息。此处为 “加法过时了”。
      • 版本 (可选字符串): 指定函数过时的版本。此处为 “1.0.0”。
    • def add(x: int, y: int) -> int: 定义名为 add 的函数,接受两个整型参数 (xy) 并返回它们的和 (整型)。

    • return x + y: 计算 xy 的和并返回结果。

  3. 条件执行:

    • if __name__ == "__main__":: 确保代码仅在脚本直接运行时执行 (而非作为模块导入时)。

    • print(add(5, 7)): 调用 add 函数并传入参数 5 和 7,并将结果 (12) 打印到控制台。

PEP 702 简介:

  • 过时警告: 运行代码时,您可能会看到类似以下的警告信息:

DeprecationWarning: Call to deprecated function (or staticmethod) add. (Adding ain’t cool no more) – Deprecated since version 1.0.0.

  • PEP 702 (可选): PEP 702 提出了一种将过时警告纳入类型系统的方案,但尚未在标准库中实现。在 PEP 702 或类似机制可用之前,可以使用 deprecated 等第三方库来管理过时问题。

要点:

  • deprecated 装饰器用于警告开发人员函数或方法不再推荐使用。
  • 警告信息提供有关过时的上下文,包括原因和过时版本。
  • 此做法鼓励开发人员迁移到替代方案,并帮助维护代码清晰度。

总结:

这段代码展示了如何使用 deprecated 装饰器标记函数为过时,并在调用时发出警告信息。虽然 PEP 702 为基于类型的过时警告提供了一种潜在的未来方向,但目前的方法依赖于 deprecated 等库。

运行上面代码输出:

/tmp/1/4.py:19: DeprecationWarning: Call to deprecated function (or staticmethod) add. (Adding ain't cool no more) -- Deprecated since version 1.0.0.
  print(add(5, 7))
12
/tmp/1/4.py:20: DeprecationWarning: Call to deprecated function (or staticmethod) sub. (减法已经过时了) -- Deprecated since version 1.0.0.
  print(sub(7, 5))
2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少陽君

谢谢老板的拿铁

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值