Каковы некоторые стратегии для написания кода Python, который работает в CPython, Jython и IronPython

Что вы можете сделать, так это написать себе функцию, чтобы проверить, принадлежит ли элемент массиву:

function inArray(array, value) {
    for (var i = 0; i < array.length; i++) {
        if (array[i] == value) return true;
    }
    return false;
}

И просто выполните:

var arr = ["1","8","17","14","11","20","2","6"];
if (inArray(arr, 8)) {
    // change picture.src to srcpicture1
} else {
    // change picture.src to srcpicture2
}

Это много более читабельны для меня.


Для дополнительных точек вы можете добавить функцию к прототипу массива, например:

Array.prototype.has = function (value) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] === value) return true;
    }
    return false;
};

И тогда вызов будет

if (arr.has(8)) // ...

Нажав еще дальше, вы можете проверить метод indexOf() на массиве и использовать его - если нет - замените его на код выше.


PS Попытайтесь не использовать Array для имени переменной, так как он зарезервирован для фактического типа массива.

16
задан minty 10 September 2008 в 07:46
поделиться

6 ответов

Если Вы делаете , находят, что необходимо записать уникальный код для среды, использовать Python

import mymodule_jython as mymodule

import mymodule_cpython as mymodule

, имеют этот материал в простом модуле (''module_importer''?) и запись Ваш код как это:

from module_importer import mymodule

Таким образом, все, что необходимо сделать, изменяются module_importer.py на платформу.

15
ответ дан Daren Thomas 10 September 2008 в 07:46
поделиться

@Daren Thomas: Я соглашаюсь, но необходимо использовать модуль платформы для определения, какой интерпретатор Вы выполняете.

10
ответ дан cdleary 10 September 2008 в 07:46
поделиться

Я пишу код для CPython и IronPython, но подсказка должна работать на Jython также.

В основном, я пишу всей платформе определенный код в отдельных модулях/пакетах и затем импортирую соответствующий на основе платформы, на которой я работаю. (см. комментарий cdleary выше)

Это особенно важно когда дело доходит до различий между реализациями SQLite и если Вы реализуете какой-либо код GUI.

2
ответ дан CyberFonic 10 September 2008 в 07:46
поделиться

Я вполне уверен, Вы уже знаете это, но к сожалению Jython не может загрузить c дополнительные модули.

0
ответ дан OscarRyz 10 September 2008 в 07:46
поделиться

Вещь № 1 IMO: Внимание на потокобезопасность . GIL CPYTHON делает пишущий ориентированный на многопотоковое исполнение код легким, потому что только один поток может получить доступ к интерпретатору за один раз. IronPython и Jython являются немного меньшим количеством содержания руки все же.

1
ответ дан Jason Baker 10 September 2008 в 07:46
поделиться

Существуют два главные проблемы в действии здесь...

Во-первых, к моему знанию, только CPython имеет RAII - необходимо закрыть собственные ресурсы в Jython, Ironpython, и т.д.

И Во-вторых, как был упомянут, потокобезопасность.

0
ответ дан Arafangion 10 September 2008 в 18:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: