Módulo de importação em Python com exemplos

⚡ Resumo Inteligente

Importar em Python Permite que um arquivo reutilize as variáveis, funções e classes definidas em outro. Um módulo é simplesmente um arquivo .py, enquanto um pacote agrupa módulos relacionados dentro de um diretório marcado por um arquivo __init__.py.

  • 🔘 O que é um módulo? Um módulo é um único arquivo .py que contém variáveis, funções ou classes.
  • ☑️ palavra-chave de importação: import carrega um módulo inteiro; module_name.function_name chama seus membros.
  • Importação seletiva: A opção `from module import name` importa apenas as funções ou variáveis ​​necessárias.
  • 🧪 Aliases: Importar módulo como alias abrevia nomes longos; from module import * expõe tudo.
  • 🛠️ Pacotes e caminhos: O arquivo __init__.py transforma uma pasta em um pacote; sys.path lista os locais de busca.
  • 🤖 Fluxos de trabalho de IA: Projetos de aprendizado de máquina importam NumPy, pandas e Py.Torch como módulos.

Módulo de importação em Python

As seções abaixo explicam módulos, pacotes, os diferentes estilos de importação e como funcionam as importações absolutas e relativas. Python.

Quais são os módulos em Python?

Um módulo é um arquivo com Python código. O código pode estar na forma de variáveis, funções ou uma classe definida. O nome do arquivo torna-se o nome do módulo.

Por exemplo, se o nome do seu arquivo for guru99.py, o nome do módulo será guru99. Com a funcionalidade do módulo, você pode dividir seu código em arquivos diferentes em vez de escrever tudo dentro de um arquivo.

O que é a sessão Python módulo de importação?

Um arquivo é considerado um módulo em PythonPara usar o módulo, você precisa importá-lo usando o importar palavra-chave. As funções ou variáveis ​​presentes no arquivo podem ser usadas em outro arquivo importando o módulo. Essa funcionalidade está disponível em outras linguagens, como TypeScript, JavaRoteiro, Java, rubi, etc

Como criar e importar um módulo em Python?

Agora vamos criar um módulo e importá-lo para outro arquivo.

Aqui está o fluxo para criar e importar o módulo conforme mostrado na captura de tela:

Crie e importe um módulo em Python

Siga os passos indicados para criar um módulo em Python.

A estrutura de pastas usada para testar o código é a seguinte:

modtest/
	test.py
	display.py	

Passo 1) Crie um arquivo e nomeie-o como test.py.

Passo 2) Dentro de test.py crie uma função chamada display_message()

Def display_message():
    return "Welcome to Guru99 Tutorials!"

Passo 3) Agora crie outro arquivo display.py.

Passo 4) Dentro do arquivo display.py, importe o arquivo de módulo test.py, conforme mostrado abaixo:

import test

Ao importar, você não precisa mencionar o arquivo test.py, apenas o nome do arquivo.

Passo 5) Em seguida, você pode chamar a função display_message() de test.py dentro de display.py. Você precisa usar o formato module_name.function_name.

Por exemplo test.display_message().

Import test
print(test.display_message())

Passo 6) Ao executar o arquivo display.py, você obterá o seguinte resultado: Saída:

Welcome to Guru99 Tutorials!

Importando uma classe em Python

Anteriormente, vimos um módulo simples com uma função. Aqui, criaremos uma classe e faremos referência a ela dentro de outro arquivo.

A estrutura de pastas para testar o código é a seguinte:

myproj/
	Car.py
	display.py

Crie um arquivo chamado Car.py com o seguinte código:

Nome do arquivo: Car.py

class Car:
	brand_name = "BMW"
	model = "Z4"
	manu_year = "2020"

	def __init__(self, brand_name, model, manu_year):
		self.brand_name = brand_name
		self.model = model
		self.manu_year = manu_year

	def car_details(self):
		print("Car brand is ", self.brand_name)
		print("Car model is ", self.model)
		print("Car manufacture year is ", self.manu_year)
			
			
	def get_Car_brand(self):
		print("Car brand is ", self.brand_name)

	def get_Car_model(self):
		print("Car model is ", self.model) 

No arquivo Car.py, existem os atributos brand_name, model e manu_year. As funções definidas dentro da classe são car_details(), get_Car_brand() e get_Car_model().

Vamos agora usar o arquivo Car.py como módulo em outro arquivo chamado display.py.

Nome do arquivo: display.py

import Car
car_det = Car.Car("BMW","Z5", 2020)
print(car_det.brand_name)
print(car_det.car_details())
print(car_det.get_Car_brand())
print(car_det.get_Car_model())

Saída:

BMW
Car brand is  BMW
Car model is  Z5
Car manufacture year is  2020
Car brand is  BMW
Car model is  Z5

Assim, podemos acessar todas as variáveis ​​e funções de Car.py usando o módulo Car.

Usando from para importar módulo

Você pode importar apenas uma pequena parte do módulo, ou seja, apenas as funções e nomes de variáveis ​​necessários, em vez de importar o código completo.

Quando você deseja importar apenas itens específicos, pode usar a palavra-chave “from” para importar o que deseja.

Então a sintaxe é

from  module import your function_name , variables,... etc.

A estrutura de pastas usada para testar o código é a seguinte:

modtest/
	test.py
	display.py	

No arquivo test.py existem 2 funções, conforme mostrado abaixo:

Nome do arquivo: teste.py

defdisplay_message():
	return "Welcome to Guru99 Tutorials!"
	
def display_message1():
	return "All about Python!"

Agora você precisa da função display_message(). A função ou variável que você está importando pode ser acessada diretamente, como mostrado abaixo:

Nome do arquivo: display.py

from test import display_message
print(display_message())

Saída:

Welcome to Guru99 Tutorials!

Agora, se você usar a função display_message1(), ela lançará um erro informando que a função não está definida, como mostrado abaixo:

from test import display_message
print(display_message1())

Saída:

Traceback (most recent call last):
File "display.py", line 3, in <module>
print(display_message1())
Name Error: name 'display_message1' is not defined

Importando tudo do módulo

A opção `import` permite importar o módulo completo usando `import` seguido do nome do módulo, ou seja, o nome do arquivo ou da biblioteca a ser usada.

Sintaxe:

Import module

Ou usando

from module import *

A estrutura de pastas usada para testar o código é a seguinte:

modtest/
	test.py
	display.py	

A seguir estão os detalhes do código dentro de test.py

my_name = "Guru99"
my_address = "Mumbai"

defdisplay_message():
	return "Welcome to Guru99 Tutorials!"
	
	
def display_message1():
	return "All about Python!"

Usando o módulo de importação

Ao usar apenas o nome do módulo de importação, para se referir às variáveis ​​e funções dentro do módulo, você precisa prefixá-las com o nome do módulo.

Exemplo

Nome do arquivo: display.py

Import test
print(test.display_message())
print(test.display_message1())
print(test.my_name)
print(test.my_address)

O nome do módulo "test" é usado para se referir às funções e variáveis ​​dentro do módulo "test".

Saída:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Usando importação *

Vejamos um exemplo usando importar *. Usando importar *, as funções e variáveis ​​são acessíveis diretamente, conforme mostrado no exemplo abaixo:

from test import *

print(display_message())
print(display_message1())
print(my_name)
print(my_address)

Saída:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

A função dir()

A função dir() é uma função integrada em PythonA função dir() retorna todas as propriedades e métodos, incluindo as propriedades internas do objeto fornecido.

Portanto, quando dir() é usado no módulo, ele retornará as variáveis ​​e funções presentes dentro do módulo.

Aqui está um exemplo funcional de dir() em um módulo. Temos uma classe chamada Car.py; vamos importá-la e atribuí-la a dir() para ver a saída.

A estrutura de pastas para testar o código será a seguinte:

test prop/
	Car.py
	test.py	

Nome do arquivo: Car.py

class Car:
	brand_name = "BMW"
	model = "Z4"
	manu_year = "2020"

	def __init__(self, brand_name, model, manu_year):
		self.brand_name = brand_name
		self.model = model
		self.manu_year = manu_year

	def car_details(self):
		print("Car brand is ", self.brand_name)
		print("Car model is ", self.model)
		print("Car manufacture year is ", self.manu_year)
			
			
	def get_Car_brand(self):
		print("Car brand is ", self.brand_name)

	def get_Car_model(self):
		print("Car model is ", self.model) 

Nome do arquivo: teste.py

import Car

class_contents = dir(Car)
print(class_contents)

A saída nos dá o nome da classe e todas as funções definidas em Car.py.

Você também pode tentar usar dir() em um módulo integrado disponível em PythonVamos tentar o mesmo no json módulo, conforme mostrado no exemplo abaixo. Ele exibirá todas as propriedades e métodos disponíveis no json módulo.

Import json
json_details = dir(json)
print(json_details)

Saída:

['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__bu
iltins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__pac
kage__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_en
coder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'loa
d', 'loads', 'scanner']

PACOTES

Um pacote é um diretório com todos os módulos definidos dentro dele. Para fazer um Python Para que o interpretador trate o diretório como um pacote, ele deve conter o arquivo `__init__.py`. O arquivo `__init__.py` transforma o diretório em um pacote. A seguir, a estrutura do pacote com o qual trabalharemos.

Pacotes em Python

O nome do pacote é Meu pacotePara começar a trabalhar com o pacote, crie um diretório chamado `mypackage/`. Dentro desse diretório, crie um arquivo vazio chamado `__init__.py`. Crie mais três arquivos: `module1.py`, `module2.py` e `module3.py`, e defina as funções conforme mostrado na captura de tela. A seguir, os detalhes dos arquivos `module1.py`, `module2.py` e `module3.py`.

módulo1.py

def mod1_func1():
print("Welcome to Module1 function1")

def mod1_func2():
print("Welcome to Module1 function2")

def mod1_func3():
print("Welcome to Module1 function3")

módulo2.py

def mod2_func1():
print("Welcome to Module2 function1")

def mod2_func2():
print("Welcome to Module2 function2")

def mod2_func3():
print("Welcome to Module2 function3")

módulo3.py

def mod3_func1():
print("Welcome to Module3 function1")

def mod3_func2():
print("Welcome to Module3 function2")

def mod3_func3():
print("Welcome to Module3 function3")

O pacote Está pronto para uso. Agora, chame o pacote dentro de qualquer um dos seus arquivos, como mostrado abaixo em test.py:

Aqui, mypackage.module1 é importado e recebe um nome alternativo como modo1Da mesma forma, você pode usar os outros módulos module2.py e module3.py do meu pacote.

import mypackage.module1 as mod1

print(mod1.mod1_func1())
print(mod1.mod1_func2())
print(mod1.mod1_func2())

Saída:

Welcome to Module1 function1
None
Welcome to Module1 function2
None
Welcome to Module1 function2
None

Acabamos de demonstrar o pacote com um módulo simples contendo funções. Conforme o seu projeto, você também pode criar pacotes com subpacotes, ou seja, subpastas com módulos e classes definidas.

Python Caminho de pesquisa do módulo

Durante a execução, quando Python se deparou nome do módulo de importaçãoO interpretador tenta localizar o módulo. Ele procura o módulo na lista de módulos internos e, em seguida, em todos os diretórios definidos em sys.path.

Resumindo, o intérprete faz a seguinte pesquisa para localizar o módulo:

  1. No seu diretório atual.
  2. Na lista de módulos integrados.
  3. Dentro dos diretórios sys.path.

Você pode obter os detalhes de sys.path importando o módulo sys e imprimindo sys.path. Isso lhe dará a lista de diretórios conforme mostrado abaixo:

importsys
print(sys.path)

Saída:

['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\
\Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\P
ython37\\DLLs']

Você também pode modificar o caminho e manter os diretórios conforme suas necessidades.

Usando o alias do módulo na importação

Você também pode converter o nome do módulo para uma forma mais curta, atribuindo-lhe um nome alternativo. O nome alternativo pode ser criado usando o as palavra chave.

Sintaxe:

import filename as alias name

A estrutura de pastas para testar o código será a seguinte:

Mod test/
	test.py
	display.py	

A seguir está o código dentro de test.py

my_name = "Guru99"
my_address = "Mumbai"

def display_message():
	return "Welcome to Guru99 Tutorials!"	
	
def display_message1():
	return "All about Python!"

Agora vamos usar um alias para test.py em display.py

Import test as t

print(t.display_message())
print(t.display_message1())
print(t.my_name)
print(t.my_address)

O alias usado para o módulo de teste é t. Portanto, as funções e variáveis ​​de test.py podem ser referenciadas usando o alias t.

Saída:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Importações Absolutas e Relativas em Python

Agora você sabe importar um arquivo como um módulo dentro de outro arquivo. Vejamos agora como gerenciar os arquivos disponíveis nas pastas. Os arquivos nas pastas podem ser importados usando importações absolutas ou relativas.

Considere que você tem a estrutura de pastas do seu projeto, conforme mostrado abaixo:

Importações Absolutas e Relativas em Python

A pasta raiz é myproject/. Ela possui duas subpastas: package1 e package2.

A pasta package1 contém dois módulos, module1.py e module2.py.

A pasta package2 possui uma classe myclass.py, um subpacote subpkg com module3.py e por último module4.py.

  • No arquivo module1.py, existe uma função chamada myfunc1.
  • No arquivo module2.py, existe uma função chamada myfunc2.
  • No arquivo module3.py, existe uma função chamada myfunc3.
  • No arquivo module4.py, existe uma função chamada myfunc4.

Usando importações absolutas

Para importações absolutas, você precisa adicionar o caminho completo do seu módulo diretamente da pasta raiz do projeto.

Vejamos agora como utilizar importações absolutas para referenciar as funções presentes em cada um dos módulos.

Para trabalhar com a função myfunc1, você precisará importá-la da seguinte forma:

from package1.module1  import  myfunc1
or
from package1 import module1
module1.myfunc1()  

Para trabalhar com a função myfunc3, você precisará importá-la da seguinte forma:

from package1.subpkg.module3  import  myfunc3
or
from package1.subpkg import module3
module3.myfunc3()  

Vantagens e desvantagens de usar importações absolutas

Aqui estão as vantagens de usar importações absolutas:

  • Torna-se fácil de trace devolvemos os módulos para verificação de código.
  • Fácil de usar e muito direto.
  • Se o projeto for movido para um caminho diferente, as importações permanecerão as mesmas.

Desvantagens de usar importações absolutas

Eis as desvantagens de usar importações absolutas:

  • O caminho de importação pode ficar muito longo caso os módulos estejam aninhados e os nomes dos módulos sejam extensos.

Usando importações relativas

Considerando a mesma estrutura de pastas mencionada acima, veremos como importá-la usando importações relativas.

Numa importação relativa, o módulo a ser importado é relativo à localização atual, ou seja, à localização onde a instrução de importação está presente.

Sintaxe

Em importações relativas, você precisa adicionar um ponto final (.) antes do nome do módulo ao importar usando da.

Haverá dois pontos (...) antes do nome do módulo se o módulo estiver um nível acima da localização atual.

Consultando o diagrama de estrutura de pastas mencionado acima, temos os seguintes módulos com suas respectivas funções, aos quais precisamos nos referir.

  • No arquivo module1.py, existe uma função chamada myfunc1.
  • No arquivo module2.py, existe uma função chamada myfunc2.
  • No arquivo module3.py, existe uma função chamada myfunc3.
  • No arquivo module4.py, existe uma função chamada myfunc4.

Para trabalhar com a função myfunc1, você precisará importá-la da seguinte forma:

from  .module1  import  myfunc1

Para trabalhar com a função myfunc3, você precisará importá-la da seguinte forma:

from  .subpkg.module3  import  myfunc3

Vantagens das importações relativas

  • É fácil trabalhar com importações relativas.
  • A partir da localização actual, as importações podem ser reduzidas em comparação com as importações absolutas.

Desvantagens das importações relativas

  • Usando importações relativas, é difícil trace de volta para onde o código reside.

Perguntas Frequentes

Python Não foi possível localizar o módulo. Confirme se o arquivo está escrito corretamente, se está no sys.path ou na pasta atual e se o pacote está instalado no seu ambiente virtual ativo. Execute o comando `pip install` seguido do nome do pacote para módulos de terceiros.

Instale-o primeiro com pip, Python Utilize um gerenciador de pacotes, por exemplo, `pip install pandas`. Após a instalação no seu ambiente, importe-o normalmente com `import pandas`. Módulos integrados como `json` não precisam de instalação.

Uma importação circular ocorre quando dois módulos importam um ao outro, deixando um deles apenas parcialmente carregado. Corrija isso mesclando o código compartilhado, importando dentro da função que precisa dele ou importando o módulo inteiro em vez de nomes específicos.

Essa proteção executa o código somente quando o arquivo é executado diretamente, não quando é importado. Sem ela, cada importação executaria novamente as instruções de nível superior do módulo. Ela mantém as funções reutilizáveis ​​separadas do código de teste em formato de script.

Não. Python Executa um módulo uma vez, depois o armazena em cache em sys.modules e reutiliza esse objeto para importações posteriores. Para forçar uma recarga durante o desenvolvimento, chame importlib.reload(module).

Use `importlib.import_module(“name”)` quando o nome do módulo for conhecido apenas durante a execução, como ao carregar plugins. Ele retorna o objeto do módulo, permitindo que você acesse suas funções como em uma importação normal.

O código de aprendizado de máquina importa NumPy, pandas, scikit-learn, TensorFlow e Py.Torch como módulos. As equipes também dividem seus próprios pipelines em módulos e pacotes reutilizáveis ​​e, em seguida, importam funções compartilhadas de pré-processamento e treinamento entre os scripts.

Sim. O GitHub Copilot e os assistentes de código sugerem linhas de importação enquanto você digita, adicionam importações ausentes e ajudam a resolver erros de importação. Sempre confirme se o módulo está instalado e se o nome corresponde ao seu ambiente antes de confiar em uma sugestão.

Resuma esta postagem com: