是否有类似反向eval()函数的东西?

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

想象一下下面的问题:你在python中有一些内容的字典,想要生成创建这个字典的python代码。 (这就像eval但反过来)有什么东西可以做到这一点吗?

场景:我正在使用远程python解释器。我可以给它源文件,但没有输入。所以我现在正在寻找一种方法将输入数据编码为python源文件。

例:

d = {'a': [1,4,7]}
str_d = reverse_eval(d)
# "{'a': [1, 4, 7]}"
eval(str_d) == d
python eval
2个回答
7
投票
repr(thing)

将输出文本,执行时(在大多数情况下)将重现字典。


1
投票

实际上,您希望这种反向功能存在于哪种类型的数据中非常重要。如果你在谈论内置/标准类,通常他们的.__repr__()方法会返回你想要访问的代码。但是如果你的目标是以人类可读的格式保存某些内容,而是使用类似eval的函数在python中使用这些数据,那么就有一个json库。因为使用eval不安全,最好使用json。 Json的问题是它无法保存任何类型的数据,它只能保存标准对象,但如果我们谈论的不是内置类型的数据,你永远不会知道,什么是他们的.__repr__(),所以没有办法使用这种数据的repr-eval

因此,对于所有类型的数据都没有反向功能,您可以使用内置的repr-eval,但对于内置数据,json库至少更好,因为它是安全的

© www.soinside.com 2019 - 2024. All rights reserved.