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)