Сравнение IronPython и Original Python. Что я могу ожидать от первого?

Я хочу изучать Python, но я весь день работаю в .Net в качестве разработчика на C #, поэтому я решил загрузить и установить IronPython и интегрированную студию IronPython. Насколько он отличается или похож на оригинальный Python? Как разработчик .Net могу ли я без проблем запускать обычный скрипт Python в среде .Net или это все та же старая утопия миграции? Чего мне ожидать?

Заранее спасибо.

РЕДАКТИРОВАТЬ: DIC. 2009 - IronPython был недавно обновлён до версии 2.6. Пожалуйста, обновите ваши ответы, если это возможно.

30.10.2009 16:29:00
2 ОТВЕТА
РЕШЕНИЕ

В вашей ситуации вполне разумно изучать IronPython (тем более что эта книга отлично помогает вам в этом!). Вы получите доступ практически ко всем функциям Python 2.5 (не уверен, когда IronPython будет обновлен до версии Python 2.6, но 2.5 уже вполне пригоден для использования), а также ко всем библиотекам .Net и сборкам, которые вы знаете и любите, и инструментам, таким как как надстройки Visual Studio.

Различия между CPython и IronPython (и Jython в этом отношении, который применяет ту же концепцию, что и IronPython к JVM - Джим Хугунин был создателем Jython задолго до того, как он перешел в Microsoft, где он создал IronPython, оба проекта сейчас процветают). Главным образом в сборке мусора и в потоке: IronPython и Jython полагаются на свои базовые платформы (таким образом, вы получаете сбор мусора с разметкой и очисткой и бесплатную многопоточность), CPython выполняет свою собственную (так что это в основном GC с подсчетом ссылок, с mark-and -отключаться время от времени, чтобы разрешить циклы ссылок, и многопоточность затруднена глобальной блокировкой интерпретатора).

Хорошо закодированный скрипт Python не полагается на детали реализации, о которых идет речь (он никогда не предполагает, что GC происходит немедленно, никогда не предполагает, что операция является атомарной при многопоточности, за исключением немногих, таких как методы Queue.Queue, которые явно задокументированы как ), но, конечно, в дикой природе есть множество скриптов, которые неаккуратны. Например:

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

это оставляет объект файла открытым, пока он не будет собран мусором; в среде подсчета ссылок сбор происходит немедленно (поэтому файл закрывается как можно скорее), в среде с разметкой и разверткой это не так (поэтому процесс, использующий такие конструкции, часто ошибочно сохраняет некоторые файлы, возможно, много файлов, бесполезно открываются гораздо дольше, чем нужно, тратя системные ресурсы и т. д.).

Итак, правильное кодирование 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 с неаккуратным кодированием (особенно в долго работающем сервере, сервисе, процессе демона и т. Д. ) в будущем вам, возможно, потребуется сделать некоторые меры по их ужесточению. Итак, между прочим, будут ли люди, которые хотят использовать более новые и лучшие версии CPython, такие как Unladen Swallow & c, как только эти версии реализуют более совершенные механизмы сборки мусора, избавятся от GIL и других улучшений; надеюсь, это уже меняет «культуру» сообщества Python в сторону более правильного, менее неаккуратного кодирования, но, конечно, вокруг исчисляется несколько миллиардов строк старого неаккуратного кода, поэтому требуется некоторая осторожность ;-).

3
30.10.2009 18:05:33
Dic. 2009: IronPython недавно обновился до 2.6
backslash17 24.12.2009 19:01:35

Большинство сценариев Python отлично работают в IronPython.

Вот список пакетов и модулей, не включенных в IronPython в последней версии.

Пока ваш скрипт не использует их, он, скорее всего, будет работать без изменений. Тем не менее, большая часть «силы» IronPython действительно вступает в игру, перенося ваши сценарии на использование классов платформы .NET вместо стандартной библиотеки python.

1
30.10.2009 16:33:26