gpt4 book ai didi

python - 有没有工具可以删除 Python 中不使用的函数?

转载 作者:太空狗 更新时间:2023-10-29 18:08:18 26 4
gpt4 key购买 nike

我遇到以下情况:我正在从事几个使用我编写的库模块的项目。库模块包含几个类和函数。在每个项目中,都使用了库代码的一些子集。

但是,当我为其他用户发布项目时,我只想提供该项目使用的代码而不是整个模块。这意味着对于给定的项目,我想从库代码中删除未使用的库函数(即创建一个新的简化库)。是否有任何工具可以自动执行此操作?

编辑

一些澄清/回复:

  1. 关于“一般情况下你不应该这样做”的回复:最重要的是,在实践中,在我发布项目之前,我手动检查库模块并删除未使用的代码。因为我们都是程序员,我们知道当您可以轻松地向计算机解释如何做时,没有理由手动做某事。所以实际上,编写这样的程序是可能的,甚至应该不会太困难(是的,它可能不是 super 通用的)。我的问题是,在我开始考虑自己实现之前,是否有人知道是否存在这样的工具。此外,欢迎提出有关实现此问题的任何想法。
  2. 我不想简单地隐藏我所有的代码。如果我想这样做,我可能不会使用 Python。事实上,我想发布源代码,但只发布与相关项目相关的代码。
  3. 关于“您受到法律保护”的评论:在我的具体案例中,法律/许可保护对我没有帮助。此外,这里的问题比窃取代码更普遍。例如,可能是为了清晰起见:如果有人需要使用/开发代码,您不希望包含数十个不相关的函数。

最佳答案

我给你的第一个建议是用更强的模块化来设计你的代码,这样你就可以拥有所有你想保留在尽可能多的 python 模块/eggs 中的功能,因为你必须让它灵活地拥有你想要的东西您的每个项目的需要。我认为这是让您的代码易于管理和阅读的唯一方法。

也就是说,如果您真的想按照您在问题中描述的方式进行操作,据我所知,没有任何工具可以完全按照您所说的进行操作,因为这是一种不常见的使用模式。

但我认为编写一个使用 rope 执行此操作的工具并不难.它进行静态和动态代码分析(因此您可以找到正在使用的导入对象,从而猜测导入模块中未使用的对象),还提供了许多重构工具来移动或删除代码。

无论如何,我认为要真正制作出一个能够准确找到当前代码中正在使用的所有代码的工具,您需要对代码进行完整的单元测试覆盖,否则您将真正有条不紊地进行测试导入模块的代码(仅使用 from foo import bar 并避免在模块之间链接导入)。

关于python - 有没有工具可以删除 Python 中不使用的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17087758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com