考虑:
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 对象这样的东西)?
模板是正确的解决方案,但对于简单的情况,你可以这样做
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()