首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用IronPython实现C#中三角函数的求值

用IronPython实现C#中三角函数的求值
EN

Stack Overflow用户
提问于 2012-10-16 00:57:35
回答 1查看 595关注 0票数 3

我尝试使用来自Iron-Python二进制文件的Python引擎来计算一些与流体力学相关的表达式。我已经得到了以下代码:

代码语言:javascript
运行
复制
ScriptEngine engine = Python.CreateEngine();
ScriptSource source = engine.CreateScriptSourceFromString("import math", SourceCodeKind.AutoDetect);
source.Execute();
source = engine.CreateScriptSourceFromString("2*sin (2)", SourceCodeKind.AutoDetect);
button1.Text = source.Execute<float>().ToString();

每当我尝试运行时,都会出现以下错误:Global name 'sin' not defined。我也尝试过Math.sin(),但没有成功。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-16 01:20:36

如果希望在全局范围内访问所有数学函数,可以使用from math import *而不是import math (这可能对您很有用,因为您的表达式本质上是数学的)。

您还应该创建一个ScriptScope来存储全局状态,以便可以执行多个语句:

代码语言:javascript
运行
复制
ScriptScope scope = engine.CreateScope();

ScriptSource source = engine.CreateScriptSourceFromString("from math import *", SourceCodeKind.AutoDetect);
source.Execute(scope);

source = engine.CreateScriptSourceFromString("2*sin (2)", SourceCodeKind.AutoDetect);
button1.Text = source.Execute<float>(scope).ToString();

您甚至可以从C#将对象放入作用域:

代码语言:javascript
运行
复制
scope.SetVariable("x", 0.577);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12900399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档