You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 如何为函数别名添加弃用警告

方案1:直接调用现有弃用装饰器(无需额外封装)

Python 的 @装饰器 本质是语法糖,等价于 变量 = 装饰器(变量),你不需要用装饰器语法直接修饰赋值语句,直接调用装饰器函数即可实现你的需求:

from deprecated import deprecated

def do_something():
    # 你的原有逻辑
    pass

# 直接调用装饰器生成带警告的别名
doSomething = deprecated(
    version="2.0",
    reason="All functions have been adapted to fit the PEP8 standard. Please use \"do_something\" instead"
)(do_something)

该实现下:

  • 调用 doSomething() 会正常触发弃用警告
  • 调用 do_something() 无警告,完全符合预期
  • 没有冗余的函数定义,保持了别名的简洁性

方案2:批量处理别名的辅助封装

如果需要修改的函数数量较多,可以写一个统一的辅助函数批量生成别名,避免重复代码:

import sys
from deprecated import deprecated

def add_deprecated_alias(new_func, old_name: str, deprecated_version: str, custom_reason: str = None):
    # 自动生成默认提示
    reason = custom_reason or f"{old_name} is deprecated, use {new_func.__name__} instead."
    # 生成带弃用警告的别名
    deprecated_alias = deprecated(version=deprecated_version, reason=reason)(new_func)
    # 把别名注册到上层模块的全局命名空间
    sys._getframe(1).f_globals[old_name] = deprecated_alias

使用方式非常简洁:

# 你的新命名函数
def do_something():
    pass
def get_user_info():
    pass
def update_config():
    pass

# 一行代码加别名
add_deprecated_alias(do_something, "doSomething", "2.0")
add_deprecated_alias(get_user_info, "getUserInfo", "2.0")
add_deprecated_alias(update_config, "updateConfig", "2.0")

内容的提问来源于stack exchange,提问作者Siebe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:15:04