Muitas vezes, nas minhas bibliotecas pessoais do Python, faço algo assim:
class MyClass:
# ...
def plot(self):
import someGraphicsLibrary as graphicslib
graphicslib.plot(self.data)
O motivo é que a inicialização someGraphicsLibraryleva algum tempo, até alguns segundos para uma das bibliotecas que eu uso. Nem sempre preciso plotar meus resultados quando uso essa classe; portanto, faz sentido não importá-lo até o momento em que ele é realmente usado, se for o caso.
Isso parece funcionar bem, mas acho que não vi no código de ninguém. Portanto, minha pergunta é simplesmente se isso é considerado uma boa prática. Existem armadilhas ocultas que se espera ao fazer as coisas dessa maneira?
1
Esta é simplesmente uma forma de carregamento lento , que não é muito especial.
—
Doc Brown
Além de ser um pouco feio, não há nenhuma razão real para você não conseguir fazer isso. E se a importação da biblioteca demorar tanto, existe até uma causa legítima para isso. Eu apenas faria questão de fazer isso raramente. A maioria das importações não deve ser tão lenta.
—
194 Neil
@DocBrown Não estou dizendo que é especial, apenas perguntando se é considerada uma boa / má prática especificamente em Python.
—
Nathaniel
@ Nathaniel: parece haver um certo supersticioso na existência de "melhores práticas" absolutas entre muitos desenvolvedores - o que é um absurdo do IMHO, qualquer "prática" tem prós e contras, e o que é bom ou ruim só pode ser avaliado no específico contexto. Seu exemplo acima parece razoável para mim, é simples e claro, e a única desvantagem real é que fica mais difícil ver todas as dependências de um módulo rapidamente (que é o ponto 3 da resposta de Kevin). Portanto, se você acha que a melhoria no desempenho vale a pena, então essa prática é boa; se não, essa prática é ruim.
—
Doc Brown