Python 和 JSL 函數從Python 在 JMP 中的應用:資料框列到資料表列的最佳實踐及計算速度影響我剛剛了解到這個很棒的新函數:
import jmp
jmp.globals['pi'] = 3.1415927
jmp.globals['bB'] = 'Bumble Bee'
print( jmp.globals.items() )
在 JSL 命名空間中定義變數-類似於Python Get() 函數的推送版本
目前存在一些限制。例如, jmp.globals目前還不支援 JSL 函數:
::f= function({x},x);
x="hello";
y=5;
z={1,2,3};
aa= associative Array({1,2});
Python Submit("
import jmp
print(jmp.globals)");
回覆如下:

或許是相關問題?
嘗試使用以下 JSL 程式碼透過 run_jsl 建立函數:
import jmp
jmp.run_jsl('x="hello";Caption(x)') # OK
jmp.run_jsl('f= function({x},x)') # crash
……竟然導致崩潰? !
逐行運行程式碼時,你會收到以下錯誤訊息:

自動化和腳本編寫回覆:Python 和 JSL 函數一個bug。 JMP 19?
我的機器上出現了不同的錯誤訊息,但看起來 run_jsl() 的行為就像是在執行 eval(f = function({x},x)) 而不是賦值運算。

我僅透過 JSL 運行程式碼,就能夠重現我在 Python 中看到的情況。
回覆:Python 和 JSL 函數是的, @hogi運行的是 JMP 19.0.1 版本。他已發郵件給技術支持,詢問這是否是已知 bug。
回覆:Python 和 JSL 函數JMP19 和 JMP19.0.1(Windows 版本)都存在相同的問題。
使用 JMP 18 則不存在這個問題。
有趣的是
eval(f = function({x},x))
與
f = function({x},x)。
所以,它是在評估參數的回傳值之前先評估參數本身嗎?
Eval(print(1);Parse("print(2)"));
顯著不同:
- 使用 Python 程式碼時,JMP 在我的系統上崩潰了(也許 Windows 和 Mac 系統之間存在差異?)
- 使用eval(f = function({x},x)) JMP 顯示 JMP 警報並繼續運作:
