Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我是否可以将IronPython视为C#的Python替代品?_Python_.net_Ironpython_Cpython_Python.net - Fatal编程技术网

我是否可以将IronPython视为C#的Python替代品?

我是否可以将IronPython视为C#的Python替代品?,python,.net,ironpython,cpython,python.net,Python,.net,Ironpython,Cpython,Python.net,我确实理解StackOverflow以某种方式讨论了这个主题,但我仍然无法找到确切的答案:我可以将IronPython视为C的Python替代品吗? 我每天都使用CPython,我喜欢Zen:),但我目前的任务是一个只有Windows的应用程序,它有一个复杂的GUI和一些其他功能,我想用.NET实现这些功能。这取决于您需要什么样的C,以及需要更换什么 如果您使用C#的原因是您需要一种相当高性能的静态类型语言,那么不,IronPython可能不会取代它 如果您使用它的原因仅仅是“我需要一些运行在.

我确实理解StackOverflow以某种方式讨论了这个主题,但我仍然无法找到确切的答案:我可以将IronPython视为C的Python替代品吗?


我每天都使用CPython,我喜欢Zen:),但我目前的任务是一个只有Windows的应用程序,它有一个复杂的GUI和一些其他功能,我想用.NET实现这些功能。

这取决于您需要什么样的C,以及需要更换什么

如果您使用C#的原因是您需要一种相当高性能的静态类型语言,那么不,IronPython可能不会取代它


如果您使用它的原因仅仅是“我需要一些运行在.NET上并且可以访问.NET库的东西”,那么是的,任何运行在.NET上的语言都可以用来替换它

如果您使用C#是因为您与一个只懂类似C语言的程序员团队合作,那么C#可能也很难被IronPython取代


<> P>这取决于你关注的是什么,需要寻找替代品。

< P> >一件事要考虑——我不知道Ion Pyththon在这方面的行为是什么。CLS合规性保证任何.Net语言都可以访问代码的编译DLL。这意味着,例如,在C#中,任何公共或受保护的方法或参数都不能是无符号整数。我不知道在IronPython中实现符合CLS的代码有多容易,我发现这可以追溯到2008年。

jalf很好地回答了“我可以将IronPython作为C#的Python替代品吗?”。如果问题是“IronPython是Pythonic.NET语言吗?”那么答案绝对是肯定的。Zen的原则——尤其是最不令人惊讶的原则——也绝对适用于IronPython与CLR的集成。

IronPython并不等同于“在.NET上运行的其他语言”,因为该语言支持的CLR运行时功能要少得多

IronPython类不是“真实的”.NET类,从传统的基于CLR的语言调用IronPython代码时需要使用API;这意味着,如果您想要真正简单的互操作性,您就必须编写胶水来“隐藏”DLR


是一种以CLR为目标的更完整的Python语言。它的(动态可推断的)静态类型(可以在一个变量一个变量的基础上替换为duck类型)还允许从C#和其他基于CLR的语言本机使用Boo编写的库,而无需考虑使用的语言。

我想如果你这样做, 在.NET4.0中会更容易

我认为您可以使用最新发布的IronPython 2.6.1 for.NET 4.0

在IronPython中使用C已经很容易了

正如您所看到的,您可以通过.NET4.0轻松地用另一种方法(使用C#中的IronPython)来实现

我认为这是可能的,但我同意Boo是一种更安全的方式。

“复杂”用户界面通常不需要“编写”它,而是在Visual Studio中通过点击来构建它。所有回调和事件代码都是自己插入的。python方面几乎没有类似的东西。我会说直接去C#

不过有一件事很烦人。如果你是真正的Pythonista,静态输入会很快到达你的位置,你会想开始向随机的人扔重物


如果出现这种情况,请考虑使用C#构建UI,并嵌入IronPython作为实现业务逻辑的脚本引擎。这可能是一个可以容忍的中间立场。

是的,我的情况正是你所描述的:我需要一种运行在.NET上并使用.NET库的语言:)谢谢你的回答。如果你使用它的原因只是“我需要运行在.NET上并可以访问.NET库的东西”,那么请查看Boo。它的语法非常类似python,但会像C#一样生成.NET程序集和可执行文件。IronPython不会这样做的。谢谢你,Paul。我已经查过了,太好了,我很快就会深入调查的。谢谢你,Residuum。这是一个非常有趣的问题。所以,如果我要在.NET下开始开发一个大型复杂的应用程序(这就是我实际上要做的),IronPython不应该是我的选择?我的意思是,我确实喜欢Python,但一切都必须放在自己的位置上。我是对的吗?@Ewan-我扩展并澄清了我的答案——但简而言之,是的,你是对的;IronPython非常适合调用.NET语言,但如果您要做的任何事情都是从传统CLR代码调用的,那么事情会突然变得丑陋和不自然。Jython也有同样的问题非常感谢Charles。你刚刚把我从巨大的时间损失中解救出来:)谢谢你,约翰。我花了一整天的时间来做决定,现在我几乎可以肯定我不会使用IronPython。我认为C#或(不太可能)Boo将是我的选择。我确实认为,熟练掌握C#是一项非常重要的技能,即使你最终使用Boo或IronPython来制作原型。还不太熟悉Boo,但我相信它将更接近C#而不是静态类型的IronPython。Boo也声称自己的表现和C#一样好。我知道如果我把它当作一个目标,我可以做到。但这不是一个目标:)我认为IronPython是一种替代语言,可以作为.NET下C的完全替代品。你可以使用PythonNET从CPython调用C,从C调用CPython#