python动态构建函数

net*_*men 5 python

我有几个小功能f1,f2,f3和功能f.

我想f是一个"容器"来f1,f2,f3:做一些操作f1,f2,f3,这取决于程序配置(例如f1f2f1f3或全部三个),仅此而已.

我看到两个简单的解决方案:首先if在函数中添加一些f:

if configuration_f1_f2:
    f1()
    f2()
Run Code Online (Sandbox Code Playgroud)

第二,我可以添加一个操作列表f:

for op in operations:
    op()
Run Code Online (Sandbox Code Playgroud)

并添加f1,f2,f3operations或者根据配置中删除它们.

但我可以采用某种构造增加了它"F"的动态代码的调用f1,f2f3精确我需要什么,没有任何if的或list的或for的?我的意思是像快速代码操作.因此,如果我的配置是" f1f3",我设置的代码是f这样的

f1()
f3()
Run Code Online (Sandbox Code Playgroud)

当我的配置更改为" f2f3"我修改代码f

f2()
f3()
Run Code Online (Sandbox Code Playgroud)

我可以这样操纵函数的代码吗?

Gre*_*ill 3

如果您足够勇敢,您可以将函数定义构造为字符串并将其传递给exec语句。例如:

func = "def f():\n"
if config_f1:
    func += " f1()\n"
if config_f2:
    func += " f2()\n"
exec func in globals()
Run Code Online (Sandbox Code Playgroud)

此时,您应该有一个新的全局f()来执行适当的代码位。