Python- und JSL-FunktionAus „Python in JMP: Dataframe-Spalte zu Datatable-Spalte: Best Practices und Auswirkungen auf die Berechnungsgeschwindigkeit“: Ich habe gerade von dieser tollen neuen Funktion erfahren:
import jmp
jmp.globals['pi'] = 3.1415927
jmp.globals['bB'] = 'Bumble Bee'
print( jmp.globals.items() )
Variablen im JSL-Namensraum definieren - wie eine Push-Version von Python Get()
Es gibt einige Einschränkungen. Zum Beispiel kennt jmp.globals derzeit keine JSL-Funktionen:
::f= function({x},x);
x="hello";
y=5;
z={1,2,3};
aa= associative Array({1,2});
Python Submit("
import jmp
print(jmp.globals)");
die Antwort:

Vielleicht ein damit zusammenhängendes Problem?
Der Versuch, mit diesem JSL-Code über run_jsl eine Funktion zu erstellen:
import jmp
jmp.run_jsl('x="hello";Caption(x)') # OK
jmp.run_jsl('f= function({x},x)') # crash
... führt zu einem Unfall!?!
Wenn Sie den Code Zeile für Zeile ausführen, erhalten Sie diese Fehlermeldung:

Automatisierung und SkripterstellungBetreff: Python- und JSL-FunktionEin Fehler. JMP 19?
Auf meinem Rechner erhalte ich eine andere Fehlermeldung, aber es scheint, als ob run_jsl() sich so verhält, als ob ein eval(f = function({x},x)) stattfände und nicht nur die Zuweisung.

Ich konnte das, was ich in Python gesehen hatte, auch mit JSL nachbilden.
Betreff: Python- und JSL-FunktionJa, @hogi verwendet JMP 19.0.1. Er hat eine E-Mail an den Support geschickt und gefragt, ob es sich um einen bekannten Fehler handelt.
Betreff: Python- und JSL-FunktionDas gleiche Problem tritt auch bei JMP19 und JMP19.0.1 (Windows-Version) auf.
Mit JMP 18 gibt es kein Problem.
Interessant, dass
eval(f = function({x},x))
ist anders als
f = Funktion({x},x).
Es wertet also das Argument aus, bevor der Rückgabewert des Arguments ausgewertet wird?
Eval(print(1);Parse("print(2)"));
Deutlich anders:
- Mit dem Python-Code stürzt JMP auf meinem System ab (vielleicht gibt es einen Unterschied zwischen Windows und Mac?).
- Bei `eval(f = function({x},x))` zeigt JMP eine JMP-Warnung an und bleibt aktiv:
