15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

mesmo nome, mas com caminhos absolutos, diferentes e únicos. No exemplo a

seguir, o programa importa atributos de dois módulos com o mesmo nome,

utils.py. A importação não dá erro porque os módulos são chamados pelo seu

caminho absoluto.

# main.py

from analysis.utils import log_base2_bucket

from frontend.utils import stringify

bucket = stringify(log_base2_bucket(33))

Contudo, ainda é possível que erros sejam encontrados caso as funções, classes

ou submódulos definidos nos pacotes tenham nomes repetidos. Por exemplo,

digamos que se queira usar a função inspect presente nos dois módulos,

analysis.utils e frontend.utils. A importação direta dos atributos não funcionará

porque o segundo comando import sobrescreve o valor de inspect no escopo

atual.

# main2.py

from analysis.utils import inspect

from frontend.utils import inspect # Grava por cima!

A solução é usar a cláusula as, parte do comando import, para renomear o que

quer que tenha sido importado para o escopo atual.

# main3.py

from analysis.utils import inspect as analysis_inspect

from frontend.utils import inspect as frontend_inspect

value = 33

if analysis_inspect(value) == frontend_inspect(value):

print('Inspection equal!')

A cláusula as pode ser usada para renomear qualquer coisa adquirida pelo

comando import, inclusive módulos inteiros. Assim, é fácil acessar código

organizado em namespaces e deixar clara sua identidade.

Nota

Outra maneira de evitar conflitos de nomes em módulos importados é sempre

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!