Closed. This question is opinion-based 。它目前不接受答案。
想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文来回答。
7年前关闭。
Improve this question
有人能想到一个使用 exec 的良好实践的例子吗?
如果总有一种更有效、更安全的方法来替换 exec,为什么 python 不弃用 exec?
想改善这个问题吗?更新问题,以便可以通过 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