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 警报并继续运行:
