Я использую доктрины Python для кода, который должен работать с Python 2 и Python 3. Все работает отлично, за исключением случаев, когда я работаю с массивом numpy, содержащим строки. В Python 3, следующий правильно:doctests с numpy массивами в Python 2 и 3
>>> np.array(["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"]) # doctest: +NORMALIZE_WHITESPACE
array(['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep',
'oct', 'nov', 'dec'],
dtype='<U3')
С Python 2, этот результат ожидается:
array(['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep',
'oct', 'nov', 'dec'],
dtype='|S3')
Примечание <U3
против |S3
разница.
Есть ли простой способ настроить мой код, чтобы проходить тесты в обеих версиях Python? Я хочу сделать арендные навязчивые изменения. Поскольку доктрины также нацелены на пользователей (чтобы они могли видеть, как использовать код), я не хочу слишком сложного или вводящего в заблуждение кода, чтобы дать им неправильное представление о правильном использовании.
У меня была аналогичная проблема, и моим решением было сбрасывать доктрины. – wim
related: [Являются ли переносные доктрины для python 2/python 3 возможными?] (Http://stackoverflow.com/q/20805434/674039) – wim
Спасибо. Теперь я немного изменил заголовок, чтобы упомянуть массивы numpy, чтобы он не дублировал связанный вопрос. –