簡體   English   中英

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`

但是,我還無法弄清楚如何在包含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_strhy.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM