3

请教个问题, Python 如何禁用函数

 2 years ago
source link: https://www.v2ex.com/t/811817
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
请教个问题, Python 如何禁用函数

V2EX  ›  Python

请教个问题, Python 如何禁用函数

  chenshaored · 23 小时 24 分钟前 · 1934 次点击
Python 中如何禁用( disable )某些函数?
由于项目背景的原因,前辈写的某些函数,让后来的开发者禁用、慎用,如何通过门禁检查,能拦截住
各位大佬,有什么好的办法吗 ?
先行谢过了。
20 条回复    2021-10-31 22:58:23 +08:00

ClericPy

ClericPy   23 小时 22 分钟前

完全没看懂具体需求是什么... 可以再生动一点么

到底是前辈用函数禁止后来者用某些东西, 还是前辈写的垃圾, 让后来者不要用这些东西...

chaleaoch

chaleaoch   23 小时 20 分钟前

装饰器呗。。。。

thetbw

thetbw   22 小时 27 分钟前

类似与 java 的 @Deprecated 呗,编译还有 ide 界面上都会有警告,python 不晓得

imycc

imycc   21 小时 28 分钟前   ❤️ 2

老哥你是国人吗,怎么这段话看着那么像。。翻译过来的

我自己没这么用过,但是我见过第三方库的常见做法是,先用 DeprecationWarning 提示用户,告知他们做好迁移准备(比如改用另一个函数),并在某个版本之后移除掉这些函数 /方法

lixiang2017

lixiang2017   21 小时 22 分钟前 via Android   ❤️ 3

jjshare123

jjshare123   19 小时 42 分钟前   ❤️ 1

还是 PHP 牛啊,配置里面直接 disabled_class 、disabled_functions

wellsc

wellsc   15 小时 48 分钟前 via iPhone

@imycc 看不出来有什么问题

wd

wd   15 小时 6 分钟前 via iPhone

如果是禁用,那可能可以直接删掉?..
如果是提示,那可能通过 commit hooks 之类做吧

dangyuluo

dangyuluo   14 小时 7 分钟前

clone python 源码,删掉相关的函数,然后重新编译

oOoOoOoOoOo

oOoOoOoOoOo   13 小时 29 分钟前 via Android

Liyiw

Liyiw   12 小时 22 分钟前

用装饰器标注弃用的函数

janxin

janxin   11 小时 52 分钟前   ❤️ 1

这个答案看需求吧,首先第一个不用用的函数咋还不删除就是一个问题...

建议的实践是使用 https://docs.python.org/3/library/warnings.html#warnings.warn 提示会在指定版本删除。Python 启动需要添加参数"-Wall"。当然,这个是有 exception 支持的,可以直接 raise 异常出来。

然后升级到指定版本后根据约定删除即可。

rpman

rpman   11 小时 25 分钟前

做个装饰器, 调用的时候输出一条 Deprecation Warning

Rache1

Rache1   6 小时 35 分钟前

@jjshare123 这个对于有些也不太好用,一些语法结构类的,看起来是个函数,实际上不是 比如 eval 、isset

nobodynight

nobodynight   3 小时 53 分钟前

如果是需要拦截调用者对一个或多个特定函数的调用,则或许可以考虑简单 Hook 目标函数。此示例仅适用于模块函数,不适用于类方法,后者需要进行额外处理。值得一提的是,Hook 处理函数可以选择接受任意位置参数和关键字参数,这意味着允许一个或多个目标函数公用一个 Hook 处理函数 (门禁),示例代码中没有这样做。

如果可能,建议考虑使用装饰器特性。

RandomAccess

RandomAccess   2 小时 26 分钟前 via iPhone

装饰器 调用前 raise error

leimao

leimao   20 分钟前 via iPhone

Baze Build

关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2373 人在线   最高记录 5497   ·  

创意工作者们的社区

World is powered by solitude

VERSION: 3.9.8.5 · 27ms · UTC 15:19 · PVG 23:19 · LAX 08:19 · JFK 11:19
♥ Do have faith in what you're doing.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK