# 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. - [[Recebendo entrada do usuário em Python]] - **[[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]]