gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:17:42 25 4
gpt4 key购买 nike

我想学习 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com