如何在函数开头插入代码?

时间:2019-02-04 15:44:29

标签: python metaprogramming code-generation code-injection

我希望能够在给定函数的开头插入一段代码。

研究主要提到使用装饰器,但是对于我的特定用例,我不想用附加的函数调用包装修改后的函数。

我也无法在函数中添加参数-我在运行时已经编译了函数,就是这样。

我不想使用包装器的原因是因为我想编写一个实用程序库,该程序库允许程序员在已经编写的函数的开头“粘贴”一段代码,而无需添加另一个级别完全到调用堆栈。主要是出于性能原因。

这怎么办?它将在不破坏Python版本的情况下工作吗?

1 个答案:

答案 0 :(得分:1)

过早的优化是万恶之源。您不应该“简单地假设”包装函数会对性能产生重大影响。没有安全,简单,可移植的方式来完成您要问的事情。最适用的解决方案是自定义metaclass,因为它允许您控制基于它的新对象的创建。