Closed. This question is opinion-based 。它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文来回答。

7年前关闭。



Improve this question




有人能想到一个使用 exec 的良好实践的例子吗?

如果总有一种更有效、更安全的方法来替换 exec,为什么 python 不弃用 exec?

最佳答案

不,eval 和相关工具并不总是坏的。

有很多东西只有在将它们表示为带有常规、位置或关键字参数(不是魔术 *args**keywords 参数)的常规函数​​时才能很好地工作。除了 eval 之外,无法动态创建具有所需参数集的函数。

有关如何使用它的一个很好的示例,请检查 collections.namedtuple 的实现。尽管可以在没有 eval 的情况下创建这样的类工厂,但是它定义的所有函数,特别是 __new___replace ,将具有无用的帮助文本,并且如果没有它,将是一个不太方便的工具。更糟糕的是,非 eval 实现几乎肯定会更慢。
eval 的这种确切用法的另一个更全面的示例是优秀的 decorator 库,它将这种做法推广到一组工具中,这些工具允许您动态地创建具有特定函数签名的函数;它在内部使用 eval

关于Python:exec 总是不好的做法,如果是这样,为什么不弃用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21553641/

10-16 22:14