我知道如何将hy
模块导入python。我要做的就是创建一个包含something.hy
代码的hy
文件,然后执行以下操作...
import hy
import something
something.func('args') # assumes there is an hy function called `func`
但是,我无法弄清楚如何在python中评估包含
hy
代码的字符串。例如 ...hycode = '(print "it works!")'
hy.SOMEHOW_EVALUATE(hycode)
# I'd like this to cause the string `it works!` to print out.
还是这个例子...
hycode = '(+ 39 3)'
result = hy.SOMEHOW_EVALUATE(hycode)
# I'd like result to now contain `42`
在python中使用
hy
时,是否可以通过这种方式评估字符串? 最佳答案
使用hy.read_str
和hy.eval
。
>>> import hy
>>> hy.read_str("(+ 39 3)")
HyExpression([
HySymbol('+'),
HyInteger(39),
HyInteger(3)])
>>> hy.eval(_)
42
>>> hycode = hy.read_str('(print "it works!")')
>>> hycode
HyExpression([
HySymbol('print'),
HyString('it works!')])
>>> hy.eval(hycode)
it works!
如果您从Github master安装Hy,这将起作用。如果需要使它在Hy的旧版本上运行,您可以看到
hy
包的__init__.py
实施简单from hy.core.language import read, read_str # NOQA
from hy.importer import hy_eval as eval # NOQA
关于python - python3/hy-在python中评估hy表达式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46351010/