1
我知道如何使用python中的hy.read_str
和hy.eval
來評估python中的hy
表達式。但是,當我使用此方法時,導入和全局變量不在hy
和python
環境之間共享。考慮下面這個例子:python3/hy - 當使用hy.eval時,導入和全局變量不共享
import hy
def hyeval(x=None):
if x is None:
return None
try:
return hy.eval(hy.read_str(str(x)))
except Exception as e:
print('!!! exception: {}'.format(e))
return None
import datetime # this is ignored within `hyeval` calls
now = hyeval('((. datetime datetime now))')
print('result: {}'.format(now))
這版畫...
!!! exception: name 'datetime' is not defined
result: None
即使我這樣做,它會產生相同的異常...
... etc. ...
hyeval('(import datetime)')
now = hyeval('((. datetime datetime now))')
print('result: {}'.format(now))
我要明確進口datetime
內的字符串 傳遞給我的hyeval
函數...
... etc. ...
now = hyeval('((do (import datetime) (. datetime datetime now)))')
print('result: {}'.format(now))
這正常打印如下...
result: 2017-09-22 09:41:49.771139
通過字符串如果我重新調用((. datetime datetime now))
電話,我必須不停地重複通過(do ...)
塊(import datetime)
通話。
從蟒蛇是進口和全局可連續調用之間記得hy.read_str/hy.eval
中調用hy
字符串時,或者說,蟒蛇全局和進口可以通過調用hy
字符串時,承認有什麼辦法?