15

我开始学习 Python,目前我非常喜欢它。但是,如果您能为我回答几个一直困扰我的问题,而我找不到任何明确的答案:

  1. 在语言兼容性方面,Python 的 C 实现(来自 python.org 的主要版本)和 IronPython 之间有什么关系?它是同一种语言吗,我是通过学习一种语言,就能顺利过渡到另一种语言,还是从 Java 到 JavaScript?

  2. IronPython 库的当前状态是什么?它落后于 CPython 库多少?我最感兴趣的是 numpy/scipy 和 f2py。IronPython 可以使用它们吗?

  3. 从 Python 和其他方式访问 VB 的最佳方式是什么(确切地说,将一些 python 库连接到 Excel 的 VBA)?

4

5 回答 5

18

1) IronPython 和 CPython 共享几乎相同的语言语法。它们之间几乎没有区别。过渡应该是微不足道的。

2) IronPython 中的库与 CPython 非常不同。Python库有点落后——很多 CPython 可访问的库(当前)在 IronPython 下无法工作。但是,IronPython 可以直接访问整个 .NET 框架,这意味着它拥有最广泛的库之一,可以本地访问,因此在许多方面,它远远领先于 CPython。一些 numpy/scipy 库在 IronPython 中不起作用,但由于 .NET 实现,一些功能不是必需的,因为 perf. 特点不同。

3) 如果您是从 VBA 访问 Excel VBA,使用 IronPython 会更容易。如果您尝试自动化 excel,IronPython 仍然更容易,因为您可以访问 Execl Primary Interop Assemblies,并且可以使用与 C# 和 VB.NET 相同的库直接自动化它。

于 2009-09-10T02:46:03.597 回答
11

在语言兼容性方面,Python 的 C 实现(来自 python.org 的主要版本)和 IronPython 之间有什么关系?它是同一种语言吗,我是通过学习一种语言,就能顺利过渡到另一种语言,还是从 Java 到 JavaScript?

相同的语言(目前为 2.5 级别——IronPython 还不是 2.6 AFAIK)。

IronPython 库的当前状态是什么?它落后于 CPython 库多少?我最感兴趣的是 numpy/scipy 和 f2py。IronPython 可以使用它们吗?

标准库在今天的 IronPython 中处于很好的状态,巨大的第三方扩展,就像你提到的那些远非如此。 由于ironcladnumpy ,开始变得可行,但不是 IronPython 的生产级别(正如, &c 的 0.5 版本号所证明的那样)。它庞大而庞大,充满了 C 编码和 Fortran 编码的扩展:我没有第一手经验,但我怀疑在除 CPython 之外的任何实现下,只有不到一半可以运行,更不用说完美运行了。numpyironcladscipy

从 Python 和其他方式访问 VB 的最佳方式是什么(确切地说,将一些 python 库连接到 Excel 的 VBA)?

IronPython 应该通过 .NET 方法使其变得更容易,但通过win32all中的 COM 实现,CPython 并没有那么远。

最后但并非最不重要的一点是,一定要看看IronPython in Action这本书——正如我每次推荐它时所说,我是有偏见的(因为我曾是它的技术评论员,并且与一位作者建立了友谊)但我认为这是客观上是 .NET 开发人员对 Python 的最佳介绍,同时也是 Pythonistas 对 .NET 的最佳介绍。

如果您需要所有scipy(哇,但那是一些“文艺复兴时期的人”计算科学家!-),CPython 确实是当今唯一真正的选择。我确信其他大型扩展(比如 PyQt 或 Mayavi)也处于类似的状态。然而,对于与当今 Windows 的深度集成,我认为 IronPython 可能具有优势。对于通用用途,CPython 可能更好(尤其是由于 2.6 中的许多新功能),除非您真的热衷于在单个进程中使用多个内核,在这种情况下 IronPython(即 GIL-更少)可能再次证明是有利的。

一种或另一种方式(甚至通过 Jython 在 JVM 上,或通过 PyPy 在特殊环境中)Python 无疑是一种很棒的语言,无论您为给定的应用程序选择什么实现!-) 请注意,您不需要坚持使用一个实现(尽管您可能应该选择一个版本——2.5 以最大限度地与 IronPython、Jython、Google App Engine 等兼容;如果您不关心任何部署选项,除了“我自己的机器上的 CPython 或虚拟控制”;-)。

于 2009-09-10T04:24:42.440 回答
2
  1. IronPython 版本 2.0.2,当前版本,支持 Python 2.5 语法。下一个版本 2.6 预计会在下个月左右的某个时间发布(尽管我不确定团队是否设置了硬性发布日期;这里是beta 版),他们将支持 Python 2.6 语法。所以,少用 Java 到 JavaScript,多用 Java 到 J# :-)
  2. 所有本身用 Python 编写的库都非常完美地工作。用 C 编写的那些问题更大;有一个名为Ironclad的开源项目(完全披露:由我的公司开发和支持),目前版本为 0.8.5,它很好地支持 numpy,但不涵盖所有 scipy。我认为我们没有用 f2py 测试过它。(Alex Martelli 下面提到的 Ironclad 版本已经超过一年了,请避免使用那个版本!)
  3. 从 IronPython 调用常规 VB.NET 非常简单——您可以非常轻松地实例化 .NET 类并调用方法(静态或实例)。调用现有的 VBA 代码可能会比较棘手;您可能想看看名为PyinexXLW的开源项目。或者,如果你想要一个电子表格,你可以用 Python 编码,那么总会有Resolver One(我公司的另一个...... :-)
于 2009-09-11T12:56:36.107 回答
1

1)CPython和IronPython实现的语言相同,或者最多相差一两个版本。这与 Java 和 Javascript 的情况完全不同,它们是两种完全不同的语言,它们被一些愚蠢的营销决策赋予了相似的名称。

2) 必须仔细评估用 C 实现的第三方库(例如 numpy)。IronPython 有一个执行 C 扩展的工具(我忘记了名字),但是有很多陷阱,所以你需要与每个库的维护者核实

3)我不知道。

于 2009-09-10T02:39:10.237 回答
0
  1. CPython 由 C 实现,对应平台,如 Windows、Linux 或 Unix;IronPython 由 C# 和 Windows .Net Framework 实现,因此它只能在带有 .Net Framework 的 Windows 平台上运行。对于语法,两者都是相同的。但我们不能说它们是同一种语言。在 windows 平台上开发时 IronPython 可以轻松使用 .Net Framework。
  2. 到目前为止,2009 年 7 月 21 日 - IronPython 2.0.2,我们最新的 IronPython 稳定版本,已经发布。您可以参考http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython
  3. 您可以通过 IronPython 使用 .Net Framework 功能访问 VB。所以,如果你想掌握 IronPython,你最好多学习 .Net Framework。
于 2009-09-10T02:44:29.757 回答