.net–IronPython与原始Python的比较.我对第一个有什么期望?

.net–IronPython与原始Python的比较.我对第一个有什么期望?,第1张

概述我希望学习Python,但我整天都在.Net作为C#开发人员工作,所以我决定下载并安装IronPython和集成的IronPython工作室.它与原始Python有何不同或相似之处?作为.Net开发人员,我可以期望在.Net环境中运行传统的Python脚本没有问题,或者这只是旧的迁移乌托邦?我能期待什么?提前致谢.编辑:Dic. 2009年 - IronP

我希望学习Python,但我整天都在.Net作为C#开发人员工作,所以我决定下载并安装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,就其而言,它与IronPython应用了与JVM相同的概念 – Jim Hugunin在他搬到微软之前很久就是Jython的创始人,在那里他发起了IronPython,两个项目现在都茁壮成长)主要是垃圾收集和线程化:IronPython和Jython依赖于他们的底层平台(因此,你得到了标记和清除垃圾收集和免费线程),cpython自己推出(因此,它主要是引用计数GC,带有mark-and – 偶尔扫描一下来解决引用循环,并且线程受全局解释器锁的阻碍).

一个编码良好的Python脚本不依赖于有问题的实现细节(它从不假设GC立即发生,从不假设 *** 作在线程下是原子的,除了少数,如Queue.Queue的方法,明确记录为),但当然有大量的脚本在野外,是草率的.例如:

data = open('x.txt').read()

这会使文件对象保持打开状态,直到它被垃圾收集为止;在引用计数环境中,集合立即发生(因此文件尽快关闭),在标记和扫描环境中并非如此(因此使用此类结构的进程通常会错误地保留一些文件,可能是许多文件,无用地打开比他们需要的更长的时间,浪费系统资源& c).

所以,适当的Python编码是:

# needed in 2.5,unneeded but innocuous in 2.6from __future__ import with_statementwith open('x.txt') as f: data = f.read()

这确保了在每个实现中立即关闭文件(with语句非常方便;-).

这不会影响您对Python的学习,​​也不会妨碍重复使用正确编码的Python代码,但是如果您想重用编码很简单的Python代码(特别是在长时间运行的服务器,服务,守护进程和放大器中) ; c)您将来可能需要对其进行一些收紧.那么,顺便说一句,那些想要使用更新更好的cpython版本的人,比如Unladen Swallow& c,一旦这些版本实现更好的垃圾收集机制,摆脱GIL和其他增强功能;希望这已经将Python社区的“文化”改变为更正确,更少草率的编码,但当然还有大量旧的草率代码,所以需要一些小心;-).

总结

以上是内存溢出为你收集整理的.net – IronPython与原始Python的比较.我对第一个有什么期望?全部内容,希望文章能够帮你解决.net – IronPython与原始Python的比较.我对第一个有什么期望?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1205914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存