我可以将IronPython视为C#的Pythonic替代品吗?

Ewa*_*Doe 12 .net python ironpython cpython python.net

我知道StackOverflow已经以某种方式介绍了这个主题,但我仍然无法弄清楚确切的答案:我可以将IronPython视为C#的Pythonic替代品吗?

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

Cha*_*ffy 13

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

IronPython类不是"真正的".NET类,在从传统的基于CLR的语言调用IronPython代码时需要使用DLR API; 这意味着,如果你想要真正简单的互操作性,你就会陷入困境,无法"隐藏"DLR.

Boo是一种更加完整的以Python为灵感的语言,主要针对CLR.它的(动态可推断的)静态类型(可以逐个变量地替换为duck)也允许用Boo编写的库本地使用来自C#和其他基于CLR的语言,而不需要为正在使用的语言.

  • @Ewan - 我扩展并澄清了我的答案 - 但简短的形式是肯定的,你是对的; IronPython非常适合调用.NET语言,但是如果您要做任何可以从传统CLR代码调用的东西,那么事情会突然变得丑陋和单一.Jython也有同样的问题. (2认同)

jal*_*alf 10

这取决于你需要什么样的C#,哪些需要更换.

如果您使用C#的原因是您需要一个相当高性能的静态类型语言,那么不,IronPython可能不会成为替代品.

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

如果您使用C#是因为您正在与只知道类C语言的程序员团队合作,那么C#可能也难以替换为IronPython.

这取决于你关心的C#的特性,并且需要找到替代品.

  • 如果您使用它的原因只是"我需要在.NET上运行并且可以访问.NET库的东西",那么请查看Boo.它在语法上非常Pythonic,但会像C#一样生成.NET程序集和可执行文件.IronPython没有这样做. (4认同)