Importando Módulos com a Instrução import
A maneira mais comum de usar um módulo é importá-lo usando a instrução import. Isso torna todo o código do módulo disponível para o seu script atual.
No explorador de arquivos, você encontrará um arquivo vazio chamado main.py. Este será nosso script principal para o restante do laboratório.
Abra main.py e adicione a seguinte linha para importar o módulo hello:
import hello
print("The main.py script has finished.")
Salve o arquivo. Agora, execute main.py a partir do terminal:
python3 main.py
Observe a saída com atenção:
This code runs on import or direct execution.
The main.py script has finished.
Note que apenas a primeira instrução print de hello.py foi executada. O código dentro do bloco if __name__ == "__main__": foi ignorado. Isso ocorre porque, quando main.py importa hello, a variável __name__ no contexto de hello.py é definida como "hello" (o nome do módulo), e não como "__main__". Este recurso é essencial para criar módulos reutilizáveis que não geram efeitos colaterais indesejados ao serem importados.
Agora, vamos trabalhar com um módulo que contém mais do que apenas instruções de impressão. Abra o arquivo module_a.py. Ele contém uma variável, uma função e uma classe.
PI = 3.14159
def greet(name):
print(f"Hello, {name} from module_a!")
class Calculator:
def add(self, x, y):
return x + y
Modifique main.py para importar module_a e usar seus membros. Para acessar um membro de um módulo importado, você usa a sintaxe nome_do_modulo.nome_do_membro.
Substitua o conteúdo de main.py pelo seguinte:
import module_a
## Access the PI variable
print(f"The value of PI is {module_a.PI}")
## Call the greet function
module_a.greet("LabEx")
## Create an instance of the Calculator class and use its method
calc = module_a.Calculator()
result = calc.add(5, 3)
print(f"5 + 3 = {result}")
Salve o arquivo e execute-o:
python3 main.py
A saída será:
The value of PI is 3.14159
Hello, LabEx from module_a!
5 + 3 = 8
Isso demonstra como a instrução import carrega um módulo inteiro, e você acessa seu conteúdo usando o nome do módulo como prefixo.