2014-02-16 2 views
1

Недавно я натолкнулся на некоторые довольно «застенчивые» ошибки от запуска кода python2 с помощью python3. Причиной было автоматическое преобразование целочисленного деления на float. Так что, хотя я этого не делал:Python от 2 до 3 предупреждений о проблемах

from __future__ import division 

Мое кодирование могло работать, но не так.

Я знаю 2to3 но проблемы являются следующие:

  • Я не вижу упоминания ничего о разделении, это заботиться о нем?
  • У меня не может быть черный ящик, изменяющий мой код, обычно ли это запускать его и использовать инструмент diff для просмотра изменений?
  • Мне нужен инструмент, который просто выдавал бы предупреждения для моего кода python2. Есть ли это?
  • Есть ли альтернатива?

Заранее благодарим за ваше время, обратная связь по любому из вопросов будет очень полезна.

+0

См [ 'DeprecationWarning'] (HTTP: //docs.python.org/2/using/cmdline.html?highlight=deprecationwarning#miscellaneous-options) в документации. Опцию -Wd можно использовать для их повторного включения. Код также может включить их с помощью 'warnings.simplefilter ('default')'. – martineau

ответ

1

Python 3 по умолчанию реализует поведение модуля division от __future__.

Python 2:

>>> 1.0/2.0 
0.5 
>>> 1/2 
0 
>>> from __future__ import division 
>>> 1.0/2.0 
0.5 
>>> 1/2 
0.5 

Python 3:

>>> 1.0/2.0 
0.5 
>>> 1/2 
0.5 

Для достижения поведение, характерное для версии 2 // использования оператора:

>>> 1//2 
0 
>>> 1.0 // 2.0 
0.0 
Смежные вопросы