Pergunta

Eu só estou querendo saber, muitas vezes eu tenho muito longo arquivos python, e as importações tendem a pilha muito rapidamente.

PEP8 diz que as importações deve ser sempre escrito no início do arquivo.


Fazer todas as importados bibliotecas são importados quando chamar uma função codificado no arquivo?Ou fazer só as bibliotecas necessárias chamado?

Faz sentido se preocupar com isso?Não há razão para importar bibliotecas de funções ou classes que precisamos deles?

Foi útil?

Solução

Toda vez que o Python atinge uma declaração de importação, ele verifica se esse módulo já foi importado e, se não, o importa. Portanto, as importações na parte superior do seu arquivo acontecerão assim que seu arquivo for executado ou importado por outro módulo.

Há algum a sobrecarga Para isso, geralmente é melhor manter as importações no topo do seu arquivo, para que o custo seja resolvido com antecedência.

Outras dicas

O melhor lugar para importações está no topo do seu arquivo. Isso documenta as dependências em um só lugar e faz com que os erros de sua ausência apareçam anteriormente. A importância em si realmente ocorre no momento do import declaração, mas isso raramente importa muito.

Não é típico que você tenha algo a ganhar ao não importar uma biblioteca até que esteja em uma função ou método que precise dela. (Nunca há nada a ganhar ao fazê -lo dentro do corpo de uma classe.) É raro que você queira dependências opcionais e ainda mais raro que essa seja a técnica certa para obtê -las. Talvez você possa compartilhar um caso de uso atraente?

Faz sentido se preocupar com isso?

Não

Não há razão para importar bibliotecas nas funções ou classes que precisam delas. É apenas lento porque o import A declaração deve verificar se foi importada uma vez e perceber que foi importada.

Se você colocar isso em uma função que é chamada com frequência, poderá perder algum tempo com todo o import verificando.

As importações acontecer quando o módulo que contém as importações é executado ou importados, não quando as funções são chamadas.

Normalmente, eu não me preocuparia com isso.Se você estiver encontrando lentidão, você pode perfil para ver se o seu problema está relacionado a este.Se for, você pode verificar para ver se o seu módulo pode dividido em módulos menores.

Mas se todos os arquivos estão sendo usados pelo mesmo programa, você só vai acabar de importar tudo.

Se uma função dentro de um módulo for a única a importar um determinado outro módulo (digamos que você tenha uma função enviando tweets, apenas se alguma opção de configuração estiver ativada), fará sentido importar esse módulo específico na função.

A menos que eu veja alguns dados de perfil provar o contrário, meu palpite é que A sobrecarga de uma declaração de importação em uma função é completamente insignificante.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top