我希望学习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的比较.我对第一个有什么期望?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)