python3/hy - 评估 python 中的 hy 表达式?
python3/hy - evaluating hy expressions in python?
我知道如何将 hy
模块导入 python。我所要做的就是创建一个包含 hy
代码的 something.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
我知道如何将 hy
模块导入 python。我所要做的就是创建一个包含 hy
代码的 something.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