【发布时间】:2019-01-26 22:33:31
【问题描述】:
假设我有一个这样的 JSON 文件:
{
"x":5,
"y":4,
"func" : def multiplier(a,b):
return a*d
}
这过度简化了我想要尝试和做的事情,但基本上我正在尝试
将 python UDF 写入 JSON 文件。有没有办法做到这一点,这样当我
做:
with open('config.json') as f:
data = json.load(f)
我可以访问这些值并执行以下操作:
v1, v2 = data['x'], data['y']
mult = data['func']
print(mult(v1,v2))
要获得预期的输出:20
注意:据我了解,JSON 不存储函数,所以也许我可以将其存储为字符串,然后在我的 python 脚本中将字符串解析为函数?不太确定。
【问题讨论】:
-
这不是一个 JSON 文件。它也不是有效的 Python 字典语法。
-
你觉得在 .py 文件中编写函数并导入它的感觉如何?
-
@jonrsharpe 减去函数定义,我的 JSON 文件的其他一切似乎都很好。我试图问一种解决这个问题的方法,这就是为什么我建议将函数定义用引号括起来以尝试使用 python 将其解析为有效函数。
-
如果您正在考虑将 XML 存储在 Python 无法执行的文件格式中,并且可以使用您选择的任何语言进行访问,我建议您使用 XML。
-
当然,在 json 中仅存储模块和函数名称在技术上是可行的...
import_module可以导入给定名称的模块,您可以使用getattr获取给定名称的函数.但很难说这对于您想要实现的目标是否是最实用的方法。
标签: python json user-defined-functions