- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想学习 Python,但作为一名 C# 开发人员,我整天都在 .Net 中工作,所以我决定下载并安装 IronPython 和集成的 IronPython 工作室。它与原始 Python 有何不同或相似之处?作为 .Net 开发人员,我是否可以期望在 .Net 环境中毫无问题地运行传统的 Python 脚本,或者这只是同一个旧的迁移乌托邦?我能期待什么?
提前致谢。
编辑:Dic。 2009 - IronPython 最近升级到 2.6。如果可能,请升级您的答案。
最佳答案
在您的情况下,学习 IronPython 是完全合理的(特别是 this book 可以很好地帮助您做到这一点!)。您基本上可以访问 Python 2.5 的所有功能(不确定 IronPython 何时升级到 2.6 版本的 Python,但 2.5 已经非常可用),加上您的所有 .Net 库和程序集了解和喜爱,以及 Visual Studio 插件等工具。
CPython 和 IronPython(以及 Jython,就此而言,Jython 将与 IronPython 相同的概念应用于 JVM)之间的区别——Jim Hugunin 是 Jython 的创始人,在他搬到微软之前很久,他在那里创立了 IronPython,现在这两个项目thrive)主要是垃圾收集和线程:IronPython 和 Jython 依赖于它们的底层平台(所以,你得到标记和清除垃圾收集和免费线程),CPython 推出自己的(所以,它主要是引用计数 GC,与偶尔标记并清除以解决引用循环和线程受全局解释器锁的阻碍)。
一个编码良好的 Python 脚本不依赖于所讨论的实现细节(它从不假设 GC 会立即发生,从不假设操作在线程下是原子的,除了少数几个,比如 Queue.Queue 的方法,它们是明确的记录为),但当然有很多草率的脚本。例如:
data = open('x.txt').read()
这会使文件对象保持打开状态,直到它被垃圾回收;在引用计数环境中,收集会立即发生(因此文件会尽快关闭),在标记和清除环境中则不是这种情况(因此使用此类构造的过程通常会错误地保留一些文件,可能是许多文件,无用地打开的时间比他们需要的时间长得多,浪费系统资源 &c)。
因此,正确的 Python 编码是:
# needed in 2.5, unneeded but innocuous in 2.6
from __future__ import with_statement
with open('x.txt') as f: data = f.read()
这确实保证在每个实现中立即关闭文件(with
语句在这种情况下非常方便;-)。
这不会影响你学习 Python,也不妨碍重用编码正确的 Python 代码,但是如果你想重用草率编码的 Python 代码(尤其是在长时间运行的服务器、服务、守护进程中)过程,&c)您将来可能需要对其进行一些收紧。因此,顺便说一句,那些想要使用更新更好的 CPython 版本(例如 Unladen Swallow 等)的人,一旦这些版本实现了更好的垃圾收集机制,就会摆脱 GIL 和其他增强功能;希望这已经改变了 Python 社区的“文化”,使其变得更正确、更少草率的编码,但当然周围有无数行旧的草率代码,因此需要小心处理;-)。
关于.net - IronPython 与原始 Python 的比较。我对第一个有什么期望?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1650898/
虽然我熟悉使用 PythonModule 程序集属性制作 .net 程序集,但我对如何制作子模块有点好奇。这会是类(class)中的类(class)吗?即:如果我有一个定义为 IronPython 模
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
有一个名为“Entities”的 IronPython 包。该包包含一个“Entity.py”文件,该文件定义了“Customer”类和“Address”类。 如果我运行这个程序: customer
所以我的数据表结构如下 ColumnName1 | ColumnName2 | ColumnName3 ------------|-------------|------------ value1
我想将 ironpython 作为脚本运行,而不是将 ironpython 代码编译成可执行文件。有没有办法将ironpython作为脚本运行? 最佳答案 是的,解释器安装在 Program File
我在 IronPython 中托管 IronPython。我没有找到使用等效的命令行参数初始化它的方法:-X:FullFrames . 我的代码有点像这样: import clr clr.AddRef
我们将 ironpython 嵌入到我们的应用程序中,以便脚本可以在我们的应用程序上下文中执行。 我使用 Python.CreateEngine() 和 ScriptScope.Execute() 来
我一直在考虑添加 IronPython 来扩展我支持的科学应用程序的想法。 这是一个好主意还是一个可怕的主意? 有没有在生产应用程序中使用 IronPython 的好例子。我看过 Resolver,它
我正在使用 IronPython 脚本来重置所有过滤器并设置一些文档属性。 “FUTUREONLY”下面的文档属性是一个下拉属性控件,根据表达式有 3 种可能的选择。当我运行脚本时,它会将文档属性重置
在查看了这两个项目中的每一个之后,似乎两者都非常相似。两者都运行在 CLI 之上,都有 Python 风格的语法,都使用 .NET 而不是标准的 Python 库。 那么,它们之间的区别和各自的优势是
我正在尝试使用 Microsoft.Web.Administration 库远程管理 IIS7 安装。 我在 IronPython 中执行此操作: import Microsoft.Web.Admin
有没有等同于Cython的东西对于 IronPython?也就是说,一种使用类型注释来编译简单函数以提高性能的方法?我知道 IronPython 的一个好处是能够快速地用 C# 或 F# 之类的东西编
我正在考虑使用 IronPython 开发一个小型应用程序,但是我想将我的应用程序分发给非技术人员,因此理想情况下我希望能够为他们提供我的应用程序的标准快捷方式以及他们需要的说明首先安装 IronPy
我在条形图上使用以下代码来切换维度。 myChart.XAxis.Expression = "[Sales]" myChart.BarWidth = 1
如何使用 Ironpython 返回 Spotfire 文件中文档属性的完整列表。 属性可以通过设置 Document.Properties["myProperty"] = "myValue" 我想做
我正在尝试使用 IronPython.Hosting 和 Pygments 为我的博客创建 ASP.NET 语法荧光笔。问题是,如果没有黑客攻击,Pygments 至少不能在 IPy 2.0 上运行。
我在 Windows XP (SP3) 系统上安装了 Aptana Studio 3 和 Eclipse 4.2.1(带 PyDev 和 PyDev 扩展)。我一直未能成功加载外部 .NET 程序集。
大家早上好, 我已经在这个问题上工作了几天,但我找不到解决办法。我已经研究并谷歌搜索无济于事。任何帮助/见解将不胜感激。我正在尝试创建一个按钮,单击该按钮时将自动通过日期过滤器(比如说从 1/1/15
想必大家都已经听说过some key developers leaving the Dynamic Languages team的消息了。由于他们认为 Microsoft 对动态语言的支持正在减弱。
我试图从经理的角度回答这个问题:如果我们用 IronPython 而不是 C# 编写应用程序,我们会招致什么整体性能损失? 这个问题是针对那些可能已经进行了一些测试、基准测试或已经完成从 C# 到 I
我是一名优秀的程序员,十分优秀!