将动态定义的Python函数写入文件

问题描述 投票:0回答:1

考虑:

def func_create(default_val):
    def the_function():
        print("The default value is: %s" % default_val)
    return the_function

new_f = func_create(1.0)
new_f()

打印出以下行:

The default value is: 1.0

有没有办法将动态创建的

new_f
导出到文件中? pickle 不起作用,因为该函数不可散列,但这是否意味着它不可能?

理想情况下,导出函数后,您将能够运行以下命令:

from new_function_module import new_f
new_f()

它会打印该行

The default value is: 1.0

为了加分,Python 是否有任何方法/库可以复制类似于 Matlab 的 matlabFunction 的行为?也就是说,将 人类可读 python 代码导出到文件(而不是像 pickle 对象这样的东西)?

python function file dynamic export
1个回答
1
投票

模板是正确的解决方案,但对于简单的情况,你可以这样做

def func_create(default_val):
    return f"""\
def the_function():
    print("The default value is: {default_val}")
"""

with open("new_function_module.py", "w") as f:
    f.write(func_create(1.0))

from new_function_module import the_function
the_function()
© www.soinside.com 2019 - 2024. All rights reserved.