Posts de Maio 9th, 2008|Página de posts diários

Diferenças no import em Python

Quero explicar algo que gostaria de ter ouvido na resposta do professor ao aluno (feita na história do post anterior), que é a diferença entre:
import módulo
e
from módulo import método/atributo/*

Antes vou tentar exemplificar!
Se fizermos:
import string
a = 'teste'
upper(a)

irá nos retornar um erro informando que o método upper() não existe, para que isso funcione devemos fazer:

string.upper(a)

ou seja,

módulo.método

Para que o primeiro código funcione, substituímos import string por from string import upper ou from string import *

Explicando teoricamente, ao fazer from módulo import método/atributo/*, os atributos e métodos dos tipos de módulos importados são importados diretamente para dentro do namespace local, ficando disponíveis diretamente, sem qualificação por nome do módulo. Enquanto da outra forma é necessário qualificar o módulo antes do método/atributo a ser utilizado.