# Python > [!NOTE] Python > > Python é uma linguagem de programação de alto nível, interpretada, de propósito geral, que se destaca pela sua simplicidade e legibilidade de código. É amplamente utilizada em diversas áreas, como desenvolvimento web, análise de dados, [[inteligência artificial]], automação, computação científica e muito mais. > > Algumas de suas características principais incluem: > - Sintaxe clara e concisa: Facilita o aprendizado e a escrita de código. > - Multiplataforma: Pode ser executada em diferentes sistemas operacionais (Windows, macOS, Linux). > - Grande biblioteca padrão: Oferece módulos e funções para uma vasta gama de tarefas. > - Comunidade ativa: Possui um grande número de desenvolvedores que contribuem com bibliotecas e suporte. Para criar um arquivo em Python, você precisa nomeá-lo `<algo>.py` (`algo` neste caso é um espaço reservado, mude para o nome que desejar) e para executá-lo use `python <algo>.py` no terminal. Um script Python simples de "Hello World" é escrito da seguinte forma: ```python print('Hello, World') ``` **:: Referência ::** [Python](https://www.python.org/) **:: Referência ::** [Site do Python (página de download)](https://www.python.org/downloads) **:: Referência ::** [Site de documentação do Python](https://docs.python.org/3/) # Conceitos de Python ## Conceitos básicos Aqui estão alguns dos conceitos básicos de Python. A maioria deles pode ser encontrada em outras linguagens de programação. * **[[Variáveis em Python]]**: Explica como atribuir valores e os tipos inferidos da linguagem, como `int`, `float`, `str`, `bool` e `NoneType` * **[[Atribuição aumentada em Python]]**: Mostra operadores como `+=`, `-=`, `*=` para operações no mesmo local. * **[[Operadores lógicos em Python]]**: Detalha o uso de `and`, `or`, `not` para construir testes lógicos . * **[[Strings e formatação em Python]]**: Aborda strings como sequências de caracteres e métodos de formatação, incluindo f-strings . * **[[Condições em Python]]**: Explica o uso de `if`, `else`, `elif` e operadores condicionais como `<`, `>=`, `==`, `!=` * **[[Sequencias em Python]]**: Introduz os diferentes tipos de sequências (strings, listas, tuplas, conjuntos, dicionários) e suas propriedades de mutabilidade e ordenação. * **[[Fatiamento em Python]]**: Descreve como extrair partes de sequências usando `range(start, stop, step)` * **[[Laços em Python]]**: Apresenta os laços `for` e `while` para iteração, e como usar `break` e `continue` . * **[[Funções em Python]]**: Detalha a definição de funções com `def`, argumentos múltiplos e arbitrários. * **[[Módulos e bibliotecas em Python]]**: Explica como organizar e reutilizar código em arquivos separados usando `import` ou `from … import` . * **[[Manipulação de arquivos em Python]]**: Mostra como abrir, ler e escrever arquivos usando a função `open` e a palavra-chave `with`. * **[[Classes em Python]]**: Introduz a programação orientada a objetos, definindo classes e o método `__init__` . * **[[Modificadores de operação em classes do Python]]**: Como redefinir o comportamento de operadores como `+` para objetos de classe. * **[[Métodos são executados diretamente nas Classes em Python]]**: Uso de `@classmethod` para métodos que operam na classe em vez de instâncias . * **[[Getters e setters são usados em classes no Python]]**: Como usar `@property` para controlar o acesso e a validação de atributos. * **[[Decoradores em Python]]**: Funções de ordem superior que modificam outras funções, aplicadas com `@` . * **[[Funções Lambda em Python]]**: Funções anônimas de uma linha, úteis para pequenas operações. * **[[Exceções em Python]]**: Como lidar com erros usando `try`, `except` e `sys.exit()` * **[[Métodos especiais em Python]]**: Métodos "dunder" como `__repr__`, `__add__`, `__mul__` que permitem que objetos interajam com operadores e funções embutidas. * **[[Ambientes virtuais em Python]]**: A importância de isolar dependências de projetos usando `venv` e `pip freeze`/`pip install -r` . * **[[Enumerações em Python]]**: Uso da função `enumerate` para iterar com índices e a classe `Enum` para criar tipos de dados especiais. * **[[Tipos de erros em Python]]**: Uma lista de erros comuns como `AttributeError`, `ImportError`, `ValueError`, `SyntaxError`, entre outros. ## Conceitos intermediários * **[[Ordenação em Python]]**: Métodos `list.sort()` e `sorted()` para ordenar sequências mutáveis e cópias, respectivamente. * **[[Dicionário padrão em Python]]**: Uso de `collections.defaultdict` para simplificar a contagem de elementos em dicionários * **[[Compreensão de listas em Python]]**: Uma forma concisa de criar listas a partir de iteráveis. * **[[Map e Filter em Python]]**: Funções para aplicar uma função a cada item de um iterável ou filtrar itens, respectivamente [. * **[[Gerador de expressões em Python]]**: Semelhante à compreensão de listas, mas os elementos são gerados sob demanda, economizando memória . * **[[Desempacotar sequencias em Python]]**: Atribuir elementos de uma sequência a múltiplas variáveis, incluindo o uso de `*` para desempacotamento arbitrário . * **[[Correspondência de padrões em Python]]**: Uso da instrução `match` para avaliar expressões com base em casos, incluindo desestruturação de dados. * **[[Criando listas de listas em Python]]**: Alerta sobre o uso do operador `*` e a preferência por compreensão de listas para evitar referências ao mesmo objeto. * **[[Compreensão de dicionários em Python]]**: Uma forma concisa de criar dicionários. * **[[Asserções em Python]]**: Uso da palavra-chave `assert` para validar informações e levantar `AssertionError` * **[[Zip em Python]]**: A função `zip()` para emparelhar elementos de múltiplos iteradores. * **[[Anotações de tipo em Python]]**: Dicas de tipo (`type hints`) para melhorar a legibilidade, documentação e análise estática do código. * **[[Operadores de deslocamento em Python]]**: Operadores bit a bit `<<` (deslocamento para a esquerda) e `>>` (deslocamento para a direita). # Bibliotecas, frameworks e ferramentas * **Bibliotecas Nativas**: * **[[Biblioteca Collections em Python]]**: Tipos de dados alternativos como `namedtuple`, `deque`, `defaultdict` * **[[Biblioteca Re em Python]]**: Para operações com [[Expressões regulares]] * **[[Biblioteca Random em Python]]**: Funções para gerar números pseudoaleatórios * **[[Itertools library in Python]]**: Implementa vários iteradores eficientes como `product`, `permutations`, `combinations` * **[[Biblioteca SQLite3 em Python]]**: Interface para bancos de dados [[Linguagem de Consulta Estruturada|SQL]] * **[[Biblioteca CSV em Python]]**: Para leitura e escrita de arquivos [[Valores separados por vírgulas|CSV]] * **[[Biblioteca Pydantic no Python]]**: Para validação de dados e gerenciamento de configurações usando _type hints_. * **Bibliotecas de Terceiros**: * **[[Biblioteca Pandas em Python]]**: Ferramenta poderosa para análise e manipulação de dados. * **[[Biblioteca Paho MQTT em Python]]**: Implementa o protocolo [[MQTT]] para comunicação com brokers. * **[[Biblioteca Python-can em Python]]**: Suporte a [[Rede de área de controlador|redes CAN]]. * **[[Biblioteca CANtools em Python]]**: Biblioteca para interfacear com [[Rede de área de controlador|redes CAN]], incluindo análise de arquivos DBC e codificação/decodificação de mensagens . * **Frameworks**: * **[[FastAPI]]**: Framework web moderno e rápido para construir APIs com Python. * **[[MicroPython]]**: Implementação de Python 3 para microcontroladores e dispositivos embarcados, como [[ESP32]] . * **[[Framework Flask]]**: Framework de desenvolvimento web leve e de código aberto. * **Ferramentas**: * **[[Pyenv]]**: Ferramenta para gerenciar múltiplas versões do Python . * **[[Thonny]]**: IDE Python projetada para iniciantes, com depurador passo a passo e visualização de variáveis . * **[[Jupyter notebooks]]**: Ferramenta para criar fluxos de trabalho iterativos e reproduzíveis, combinando código e texto de marcação . # Exemplos de scripts e aplicações * **[[Função para gerar matriz de zeros em Python]]**: Um script básico que demonstra o uso de laços e listas para criar uma matriz. * **[[Busca linear em Python]]**: Implementação do [[Algoritmo de busca linear]] * **[[Primeiros passos na ESP32 com Micropython e Thonny]]**: Um tutorial prático que mostra como usar [[Thonny]] para gravar firmware [[MicroPython]] em um [[ESP32]] e controlar um [[Diodo emissor de luz|LED]]