ОПТОСОЗ 8: как следует группировать будущий импорт?

по данным PEP 8:

импорт должен быть сгруппирован в следующем порядке:

  1. импорт стандартной библиотеки
  2. импорт связанных третьих лиц
  3. импорт локального приложения/библиотеки

вы должны поместить пустую строку между каждой группой импорта.

но он не упоминает о __future__ импорт. Должен!--2--> импорт сгруппировать вместе со стандартным импортом библиотеки или отдельно от стандартного импорта библиотеки.

Итак, что более предпочтительно:

from __future__ import absolute_import
import sys
import os.path

from .submod import xyz

или:

from __future__ import absolute_import

import sys
import os.path

from .submod import xyz

1 ответов


Я лично разделяю их. А __future__ импорт-это не просто привязка имени, как и другие импорта, он изменяет значение языка. С такими вещами, как from __future__ import division модуль, скорее всего, будет работать нормально как с импортом, так и без него, но даст разные (неправильные) результаты в местах, где мне нечего сказать, чтобы посмотреть на имена, импортированные, если я хочу знать больше о том, откуда они берутся. __future__ импорт должны выделиться как можно больше.

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