Email or username:

Password:

Forgot your password?
cauf 🇷🇺

@strizhechenko

По поводу вот этой статьи
strizhechenko.github.io/2022/1

Никогда не знал, что это пытаются использовать для оптимизации памяти. Вообще я пишу импорты исключительно в формате "from x import y" ровно для того, что бы поддерживать гигиену области видимости модуля (не столько в рантайме, сколько в IDE при работе с кодом), и компактности кода ради (терпеть не могу вызовы методов типа "yarl.utils.urls.Url" - проще импортнуть класс)

7 comments
Joinny Hash

@cauf там статейка сильно недописана, кажется её проще удалить или мувнуть в драфты, пока не обрастёт жирком. Спасибо что подчеркнул это, а то я сомневался :)

E23

@strizhechenko @cauf так можно десятилетиями обрастать, пускай уж лежит

Joinny Hash

@E23 @cauf я раз в два года такие статейки группирую в одну, либо дополняю, либо вычищаю, просто сверху вниз иду :)

Joinny Hash

@cauf а го дискасс за области видимости и формат импортов.

У меня есть отдельный enums.py в проектах и порой происходит микрохоливар/война правок с коллегой/самим собой (sic).

Ей больше по душе

from kekeke import enums

И потом использовать везде enums.EventType.universal

Мне больше заходит

from kekeke.enums import EventType

Даже если это доходит до

from .. import (
EventType,
CustomerStatus,
RandomName
)

И требует правки импортов при вводе новых enum. У тебя есть здесь вкусовщина?

@cauf а го дискасс за области видимости и формат импортов.

У меня есть отдельный enums.py в проектах и порой происходит микрохоливар/война правок с коллегой/самим собой (sic).

Ей больше по душе

from kekeke import enums

И потом использовать везде enums.EventType.universal

Мне больше заходит

from kekeke.enums import EventType

cauf 🇷🇺

@strizhechenko Ода, она у меня для вас есть!

На нескольких последних проектах сталкивался с тем, что есть модули с сотнями классов. А в текщем модуле тебе нужны всего 5-7 классов. И вот тогда мне куда проще написать

from kekeke import (
class1,
class2,
...
classN,
)

чем каждый раз копаться в сотнях предлоежний от этого модуля.

Ну и еще вишенкой на тортике.

Я бы руки отрубал тем, кто додумался ввести относительные импорты глубиной более 1 уровня. У меня в практике встречались вот такие перлы

from ..... import kekeke

и у тебя очень мало шансов понять, откуда именно это импортировано, если только не открывать файловый менеджер и не считать гребанные папочки и точечки.

@strizhechenko Ода, она у меня для вас есть!

На нескольких последних проектах сталкивался с тем, что есть модули с сотнями классов. А в текщем модуле тебе нужны всего 5-7 классов. И вот тогда мне куда проще написать

from kekeke import (
class1,
class2,
...
classN,
)

чем каждый раз копаться в сотнях предлоежний от этого модуля.

cauf 🇷🇺

@strizhechenko Кстати, мне система импорта питона не очень нравится из-за того, что для каждого вложенного подпакета надо прописывать отдельную цепочку импортов. То есть

from pack1.pack2.pack3.module1 import class1

а если тебе надо импортнуть из соседнего модуля, то будь добр написать всю конструкцию заново

from pack1.pack2.pack3.module2 import class2

Как мне кажется, можно было бы ввести что-то типа группировки импортов. Например так:

from pack1.pack2.pack3 (
from module1 import class1,
from module2 import class2,
)

Но пока об этом приходится только мечтать

@strizhechenko Кстати, мне система импорта питона не очень нравится из-за того, что для каждого вложенного подпакета надо прописывать отдельную цепочку импортов. То есть

from pack1.pack2.pack3.module1 import class1

а если тебе надо импортнуть из соседнего модуля, то будь добр написать всю конструкцию заново

Joinny Hash

@cauf простите
""" yaml
from common
from enum
import EventType, CustomerStatus
from db
import models
from manager import atomic
"""

Go Up