![](/img/trans.png)
[英]python3/hy - When using hy.eval, imports and globals are not shared
[英]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`
但是,我還無法弄清楚如何在包含hy
代碼的python中評估字符串。 例如 ...
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.