我有几个小功能f1,f2,f3和功能f.
我想f是一个"容器"来f1,f2,f3:做一些操作f1,f2,f3,这取决于程序配置(例如f1和f2或f1和f3或全部三个),仅此而已.
我看到两个简单的解决方案:首先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,f3在operations或者根据配置中删除它们.
但我可以采用某种构造增加了它"F"的动态代码的调用f1,f2并f3精确我需要什么,没有任何if的或list的或for的?我的意思是像快速代码操作.因此,如果我的配置是" f1和f3",我设置的代码是f这样的
f1()
f3()
Run Code Online (Sandbox Code Playgroud)
当我的配置更改为" f2和f3"我修改代码f来
f2()
f3()
Run Code Online (Sandbox Code Playgroud)
我可以这样操纵函数的代码吗?
如果您足够勇敢,您可以将函数定义构造为字符串并将其传递给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()来执行适当的代码位。
| 归档时间: |
|
| 查看次数: |
1470 次 |
| 最近记录: |