Módulos e bibliotecas são blocos de código reutilizáveis, organizados em arquivos separados, que expandem as funcionalidades da [Python](app://obsidian.md/Linguagem%20de%20programa%C3%A7%C3%A3o%20Python). Eles promovem a organização, a reutilização de código e evitam a duplicação. Um módulo é geralmente um único arquivo, enquanto um pacote é uma coleção de módulos relacionados.
Para usar um módulo ou biblioteca, você precisa importá-lo. Existem duas formas principais de fazer isso:
1. from … import: Importa nomes específicos do módulo diretamente para o seu namespace.
```python
from functions import square # Importa a função 'square' do módulo 'functions'
for i in range(10):
print(f"O quadrado de {i} é {square(i)}") # Usa a função 'square' diretamente
# Resultado:
# O quadrado de 0 é 0
# O quadrado de 1 é 1
# O quadrado de 2 é 4
# O quadrado de 3 é 9
# O quadrado de 4 é 16
# O quadrado de 5 é 25
# O quadrado de 6 é 36
# O quadrado de 7 é 49
# O quadrado de 8 é 64
# O quadrado de 9 é 81
```
Essa forma é útil quando você precisa usar apenas algumas funções ou classes do módulo, pois evita a necessidade de prefixar cada uso com o nome do módulo.
1. import: Importa o módulo inteiro, exigindo que você use o nome do módulo para acessar seus membros.
```python
import functions # Importa o módulo 'functions'
for i in range(10):
print(f"O quadrado de {i} é {functions.square(i)}") # Usa a função 'square' através do módulo
# Resultado:
# O quadrado de 0 é 0
# O quadrado de 1 é 1
# O quadrado de 2 é 4
# O quadrado de 3 é 9
# O quadrado de 4 é 16
# O quadrado de 5 é 25
# O quadrado de 6 é 36
# O quadrado de 7 é 49
# O quadrado de 8 é 64
# O quadrado de 9 é 81
```
Essa forma é útil quando você precisa usar muitas funções ou classes do módulo, ou quando quer evitar conflitos de nomes com outros identificadores no seu código.
Aqui estão algumas bibliotecas importantes em Python:
- [Biblioteca Random em Python](obsidian://open?file=02%20-%20Notas%20de%20literatura%2FBiblioteca%20Random%20em%20Python.md): Para geração de números aleatórios.
```python
import random
print(random.randint(1, 10)) # Imprime um número inteiro aleatório entre 1 e 10
```
- Sys: Fornece acesso a variáveis e funções específicas do sistema.
```python
import sys
print(sys.version) # Imprime a versão do Python
```
- Requests: Simplifica o envio de requisições HTTP para acessar recursos da web.
```python
import requests
response = requests.get('https://www.example.com')
print(response.status_code) # Imprime o código de status da resposta HTTP
```
- Json: Permite trabalhar com dados no formato JSON (JavaScript Object Notation).
```python
import json
data = {'name': 'John', 'age': 30}
json_string = json.dumps(data) # Converte o dicionário em uma string JSON
print(json_string)
```
- Statistics: Oferece funções estatísticas para análise de dados.
```python
import statistics
data = [1, 2, 3, 4, 5]
print(statistics.mean(data)) # Imprime a média dos dados
```
- Numpy: Biblioteca fundamental para computação numérica, com suporte a arrays multidimensionais e funções matemáticas.
```python
import numpy as np
array = np.array([1, 2, 3])
print(array * 2) # Imprime o array multiplicado por 2
```
- Pandas: Fornece estruturas de dados e ferramentas para análise e manipulação de dados tabulares (como em planilhas).
```python
import pandas as pd
data = {'name': ['John', 'Mary'], 'age': [30, 25]}
df = pd.DataFrame(data) # Cria um DataFrame a partir de um dicionário
print(df)
```
Você também pode criar seus próprios módulos. Basta colocar suas funções e variáveis em um arquivo .py. Por exemplo, se você criar um arquivo chamado meu_modulo.py com o seguinte conteúdo:
```python
def saudacao(nome):
print(f"Olá, {nome}!")
variavel_global = "Este é um exemplo"
if __name__ == "__main__":
# Este código é executado apenas quando o módulo é executado diretamente
saudacao("Mundo")
```
Você pode importar e usar este módulo em outro arquivo:
```python
import meu_modulo
meu_modulo.saudacao("Usuário") # Saída: Olá, Usuário!
print(meu_modulo.variavel_global) # Saída: Este é um exemplo
```
A condição if **name** == "**main**": permite que você execute código específico quando o módulo é executado diretamente (e não quando é importado).
Para saber mais, consulte a [Importação de módulos em Python](app://obsidian.md/Importa%C3%A7%C3%A3o%20de%20m%C3%B3dulos%20em%20Python), [Pacotes em Python](app://obsidian.md/Pacotes%20em%20Python) e [Virtualenv em Python](app://obsidian.md/Virtualenv%20em%20Python).
:: Referência: :: [Documentação do Python sobre módulos](https://docs.python.org/3/tutorial/modules.html)