Импорт модуля на основе установленной версии Python?

(Примечание: хотя клонирующаяся версия потенциально полезна, для простой мелкой копии конструктор, которого я упоминаю в другом сообщении, является более оптимальным вариантом.)

, Как глубоко Вы хотите, чтобы копия была, и какую версию.NET Вы используете? Я подозреваю, что LINQ, вызов к ToDictionary, определяя и ключ и селектор элемента, будет самым легким способом пойти при использовании.NET 3.5.

, Например, если Вы не возражаете против значения, являющегося мелким клоном:

var newDictionary = oldDictionary.ToDictionary(entry => entry.Key,
                                               entry => entry.Value);

, Если Вы уже вынудили T реализовывать ICloneable:

var newDictionary = oldDictionary.ToDictionary(entry => entry.Key, 
                                               entry => (T) entry.Value.Clone());

(Те не тестируются, но должны работать.)

11
задан SilentGhost 9 December 2009 в 16:59
поделиться

2 ответа

try:
    import simplejson as json
except ImportError:
    import json

конечно, он не работает в случаях, когда в python-2.5 у вас нет Simplejson установлен, как и в вашем примере.

18
ответ дан 3 December 2019 в 02:40
поделиться

Though the ImportError approach (SilentGhost's answer) is definitely best for this example, anyone wanting to do that __version__ thing would use something like this:

import sys
if sys.version_info < (2, 6):
    import simplejson as json
else:
    import json

To be absolutely clear though, this is not the "best way" to do what you wanted... it's merely the correct way to do what you were trying to show with __version__.

13
ответ дан 3 December 2019 в 02:40
поделиться
Другие вопросы по тегам:

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