python
python
Tipos de Dados: int, float, str, list, tuple, dict, set, bool…………………………………………………………………………………
Compreensão de Listas, Sets e Dicionários: [expressão for item in lista], {expressão for item in conjunto},
{chave: valor for chave, valor in dicionario.items()}........................................................................................
Strings: métodos como .format(), .split(), .join(), .strip(), .find(), .replace(), .startswith(), .endswith()………..
Listas: métodos como .append(), .extend(), .insert(), .remove(), .pop(), .index(), .count(), .sort(), .reverse()
……………………………………………………………………………………………………………………………………………………
Decoradores: @decorador...............................................................................................................................
Asserções: assert..............................................................................................................................................
Classes e Objetos: class MinhaClasse:, métodos especiais como init, str, repr.................................................
Módulos Especiais: os, sys, math, random, datetime, json, csv, requests..........................................................
para criar variaveis no python é muito simples, não é igual o Javascript que precisa de var, let e const, simplesmente
fazemos assim:
Como vimos, no python não possue constantes, normalmente para indicar que uma variável não pode ter seu valor
modificado, o nome da variável é criado em maiúsculo, assim:
NUMERO_QUEBRADO = 4.5
Tipos de dados
Adição
Subtração
Multiplicação
Divisão
Resto
Exponencial
Operadores aritméticos
Igualdade
Diferença
Maior
Maior ou igual
Menor
Menor ou igual
Operadores lógicos
Operador and
Operador or
Operador not
Estruturas condicionais
If, elif e else
Exemplo:
Estruturas de Repetição: for, while
Estrutura de repetição for:
A estrutura de repetição for é usada para iterar sobre uma sequência (como uma lista,
tupla, conjunto, dicionário ou string) ou um iterável. Aqui está a sintaxe básica:
No terminal:
Ambas as estruturas de repetição são muito úteis, mas a escolha entre for e while depende
da situação. Use for quando você sabe exatamente quantas vezes deseja iterar sobre uma
sequência e while quando você precisa repetir um bloco de código enquanto uma condição
específica for verdadeira, mas não necessariamente sabe quantas iterações serão
necessárias de antemão.
Função
Como usar funções no python:
No terminal:
No terminal:
No terminal:
No terminal:
Escopo Local:
Variáveis definidas dentro de uma função têm escopo local. Elas só podem ser acessadas dentro da função
onde foram definidas.
Exemplo:
No terminal:
Escopo Nonlocal:
O escopo nonlocal é usado quando queremos modificar uma variável que está no escopo de uma função
externa, mas não é global. Isso ocorre especialmente quando temos funções aninhadas (uma função
dentro de outra função) e queremos modificar uma variável da função pai.
Exemplo:
No terminal:
Usando os imports
Importando um Módulo com import:
Você pode importar um módulo inteiro usando a palavra-chave import. Isso importa todo o conteúdo do
módulo, e você precisa usar o nome do módulo para acessar suas funções, classes e variáveis.
No terminal:
try-except:
A estrutura try-except é usada para lidar com exceções. O código que pode gerar uma exceção é colocado
no bloco try. Se ocorrer uma exceção dentro do bloco try, o controle é transferido para o bloco except,
onde você pode lidar com a exceção.
Exemplo:
finally:
O bloco finally é usado para definir código que será executado independentemente de ocorrer ou não uma
exceção. Isso é útil para limpar recursos ou executar ações de limpeza que devem ocorrer,
independentemente de qualquer exceção.
Exemplo:
raise:
A palavra-chave raise é usada para levantar (lançar) uma exceção explicitamente. Isso pode ser útil quando
você deseja indicar que ocorreu um erro em uma situação específica dentro do seu código.
Exemplo:
context Managers: with
Esse método abre um determinado objeto e itera sobre ele (seja esse objeto um arquivo de texto, um
banco de dados e etc), a baixo vamos ver um exemplo usando esse método pra abrir um arquivo de texto,
armazenar o valor desse arquivo em uma variável e imprimindo o valor dessa variável no terminal:
No terminal:
Agora vamos ver como usar esse método para iterar sobre um banco de dados:
No terminal:
Geradores:
Um gerador em Python é uma função especial que produz uma série de valores usando a instrução yield.
Ele permite que você itere sobre a série de valores produzidos sem a necessidade de armazenar todos os
valores na memória de uma vez.
yield: A instrução yield é usada em uma função para produzir um valor e "pausar" a execução da função.
Quando a função é chamada novamente, a execução continua a partir do ponto onde foi pausada.
Exemplo:
No terminal:
A duvida que pode ter ficado é só desse range, ele funciona da seguinte forma, você
adiciona um número e ele cria uma lista do 0 até o número que você colocou nele, no nosso
exemplo colocamos o número 5, então o “for” vai criar uma lista do 0 até o 5, e a partir
disso o conseguimos usar o for para iterar sobre essa lista numérica. Sendo assim, quando o
resultado da divisão dos números de 0 até 5 der 0, vai parar no yield e retornar para a
função o valor que ela parou.
funcao = lambda x: x + 1
Exemplo de uso:
resultado = funcao(5)
print(resultado)
Compreensão de Listas:
A compreensão de lista permite criar uma nova lista a partir de uma expressão, aplicada a cada item em
uma sequência (como uma lista, tupla ou iterável). A sintaxe básica é:
Exemplo:
Compreensão de Conjuntos:
A compreensão de conjunto é semelhante à compreensão de lista, mas cria um conjunto (que é uma
coleção sem elementos duplicados) em vez de uma lista. A sintaxe é:
{expressao for item in conjunto}
Exemplo:
Compreensão de Dicionários:
A compreensão de dicionários permite criar um dicionário a partir de uma expressão aplicada a cada par de
chave-valor em um dicionário ou iterável de pares de chave-valor. A sintaxe é:
{chave: valor for chave, valor in dicionário.items()}
Exemplo:
Métodos de strings
.format()
O método .format() é usado para formatar uma string, inserindo valores de variáveis em posições
específicas na string.
Exemplo:
.split()
O método .split() divide uma string em uma lista de substrings com base em um separador especificado.
Exemplo:
.join()
O método .join() concatena os elementos de uma lista em uma única string, utilizando a string que chama o
método como separador entre os elementos.
Exemplo:
.strip()
O método .strip() remove espaços em branco (ou outros caracteres especificados) do início e do final de
uma string.
Exemplo:
.find()
O método .find() retorna a posição da primeira ocorrência de uma substring dentro de uma string. Se a
substring não for encontrada, retorna -1.
Exemplo:
.replace()
O método .replace() substitui todas as ocorrências de uma substring por outra substring em uma string.
Exemplo:
.startswith() e .endswith()
Esses métodos verificam se uma string começa ou termina com uma determinada substring, retornando
True ou False.
Exemplo:
Métodos de listas
.append()
O método .append() é usado para adicionar um elemento ao final de uma lista.
Exemplo:
.extend()
O método .extend() é usado para adicionar todos os elementos de uma lista (ou qualquer iterável) ao final
de outra lista.
Exemplo:
.insert()
O método .insert() é usado para inserir um elemento em uma posição específica em uma lista.
Exemplo:
.remove()
O método .remove() é usado para remover a primeira ocorrência de um elemento específico de uma lista.
Exemplo:
.pop()
O método .pop() é usado para remover e retornar o elemento de uma lista em uma posição específica. Se
nenhum índice for especificado, ele remove e retorna o último elemento da lista.
Exemplo:
.index()
O método .index() é usado para encontrar o índice da primeira ocorrência de um elemento em uma lista.
Exemplo:
.count()
O método .count() é usado para contar o número de ocorrências de um elemento em uma lista.
Exemplo:
.sort()
O método .sort() é usado para ordenar os elementos de uma lista.
Exemplo:
.reverse()
O método .reverse() é usado para inverter a ordem dos elementos em uma lista.
Exemplo:
As tuplas em Python são sequências ordenadas de elementos, semelhantes às listas, mas com a diferença
fundamental de que elas são imutáveis, ou seja, uma vez criadas, não podem ser alteradas. As tuplas são
representadas por elementos separados por vírgulas e geralmente são delimitadas por parênteses. Aqui
está uma introdução sobre como usar tuplas em Python:
Acessando Elementos:
Os elementos de uma tupla podem ser acessados utilizando índices, da mesma forma que em listas.
print(tupla[0]) # Saída: 1
print(tupla[2]) # Saída: 3
Fatiamento (Slicing):
Você pode fatiar uma tupla para obter uma parte dela, da mesma forma que em listas.
Imutabilidade:
Como mencionado, as tuplas são imutáveis. Isso significa que você não pode adicionar, remover ou
modificar elementos em uma tupla depois que ela é criada. Tentar fazer isso resultará em um erro.
Métodos de Tupla:
As tuplas têm poucos métodos devido à sua imutabilidade. Aqui estão alguns dos métodos mais comuns:
count(): Retorna o número de ocorrências de um determinado valor na tupla.
index(): Retorna o índice da primeira ocorrência de um determinado valor na tupla.
Exemplo:
tupla = (1, 2, 3, 2, 4, 5, 2)
print (tupla.count(2)) # Saída: 3
print (tupla.index(4)) # Saída: 4
Métodos de dicionário
Vamos aprender como usar métodos de dicionário. Vamos usar como exemplo esse dicionário a baixo:
Assim você pega todos os itens, tanto chaves quanto valores dos itens da lista:
Aqui tem outro jeito de pegar determinado valor de um item do dicionário através da chave:
Assim você remove um item da lista:
Métodos de conjuntos
Conjuntos em Python são uma estrutura de dados que armazena elementos únicos e não ordenados. Eles
são úteis quando você precisa armazenar um conjunto de itens sem se preocupar com a ordem ou a
duplicação. Aqui estão alguns dos métodos mais comuns para conjuntos em Python:
Para remover valores de um conjunto, mas diferente do “remove” a cima, ele não gera um erro caso o item
que você queira remover não exista:
Assim você retorna a união de dois conjuntos (todos os elementos que estão em qualquer um dos
conjuntos).
Expressões regulares, também conhecidas como regex, são padrões utilizados para encontrar sequências
de caracteres em strings. O módulo re em Python permite trabalhar com expressões regulares de forma
eficiente. Aqui está um guia básico sobre como usar o módulo re:
Para começar, você precisa importar o módulo re, após isso vamos aprender alguns métodos desse
módulo.
re.search(): Procura por um padrão em toda a string e retorna a primeira correspondência encontrada.
Exemplo:
re.match(): Procura por um padrão apenas no início da string e retorna a primeira correspondência
encontrada.
Exemplo:
re.findall(): Encontra todas as ocorrências de um padrão na string e retorna uma lista com todas as
correspondências encontradas.
Exemplo:
Decoradores: @decorador
Em Python, os decoradores são funções que modificam ou estendem outras funções ou métodos. Eles
permitem adicionar funcionalidades a funções existentes sem alterar seu código. Decoradores são
indicados com o símbolo “@” seguido do nome do decorador, e são colocados acima da definição da
função que será decorada. Aqui está um exemplo básico de como usar decoradores:
Neste exemplo, meu_decorador é um decorador que adiciona uma funcionalidade extra antes e depois da
execução da função decorada. A função minha_funcao é decorada com @meu_decorador, o que significa
que sempre que minha_funcao for chamada, na verdade a função funcao_decorada será chamada, que por
sua vez chama minha_funcao dentro de si mesma, mas adicionando a lógica extra definida pelo decorador.
Decoradores são comumente usados em Python para implementar funcionalidades como log,
autenticação, controle de acesso, e muito mais. Eles são uma maneira poderosa de estender a
funcionalidade de funções e métodos de forma modular e reutilizável.
Asserções: assert
Em Python, a instrução assert é usada para testar se uma condição é verdadeira. Se a condição for
verdadeira, o programa continua sua execução normalmente. No entanto, se a condição for falsa, o
programa lança uma exceção do tipo AssertionError, interrompendo a execução do programa.
A sintaxe básica da instrução assert é:
Vimos que o “print(“Após a asserção”)” nem apareceu, pois o programa deu erro e encerrou no assert pois
a comparação de 5 ser igual a 10 é falsa.
Assincronia: async, await, asyncio
Em Python, assincronia refere-se à capacidade de escrever código que pode executar tarefas de forma
concorrente e assíncrona, permitindo que o programa continue executando outras operações enquanto
aguarda a conclusão de uma operação de entrada/saída (I/O) lenta, como solicitações de rede ou
operações de disco. O módulo asyncio fornece suporte nativo para programação assíncrona em Python.
Aqui está um resumo sobre como usar assincronia com async, await e asyncio:
async e await:
async: async é uma palavra-chave que precede a definição de uma função e a marca como uma função
assíncrona. Funções assíncronas podem conter await e podem ser chamadas de forma assíncrona.
await: await é uma palavra-chave usada dentro de funções assíncronas para indicar que uma operação
assíncrona está sendo chamada. await pausa a execução da função até que a operação assíncrona seja
concluída e o resultado esteja disponível.
Exemplo Básico:
Suponha que você tenha uma função que simula uma operação assíncrona de espera por um segundo:
No terminal:
Neste exemplo:
fetch_data(url): é uma função assíncrona que faz uma solicitação assíncrona à URL
fornecida usando o módulo aiohttp para solicitações assíncronas HTTP.
main(): é a função principal assíncrona que cria tarefas assíncronas para cada URL em uma
lista e, em seguida, aguarda todas as tarefas serem concluídas usando asyncio.gather().
Para abrir um arquivo, você usa a função open() e passa o caminho do arquivo e o modo de
abertura como argumentos. O modo de abertura determina se o arquivo será aberto para
leitura ('r'), escrita ('w') ou anexação ('a'), entre outros modos.
Exemplo de abertura de um arquivo para leitura:
Você pode ler o conteúdo de um arquivo usando o método read() do objeto de arquivo. Isso
retornará o conteúdo do arquivo como uma string.
Exemplo:
Para escrever em um arquivo, você precisa abrir o arquivo no modo de escrita ('w'). Você
pode escrever dados no arquivo usando o método write() do objeto de arquivo.
Exemplo:
Uma maneira mais segura e conveniente de trabalhar com arquivos em Python é usando o
gerenciador de contexto with. Isso garante que o arquivo seja fechado corretamente,
mesmo se ocorrerem exceções durante a execução do código.
Exemplo:
Classes
Vamos aprender alguns conceitos, métodos e a como usar classes no python.
Classe é uma estrutura que representa um conjunto de objetos que compartilham características comuns.
Em Python, você pode definir uma classe usando a palavra-chave class, seguida pelo nome da classe. Aqui
está um exemplo básico de uma classe em Python:
No terminal:
Além do método __init__, existem outros métodos especiais em Python, conhecidos como métodos
mágicos ou dunder (double underscore methods). Aqui estão dois dos mais comuns:
__str__(self): Define a representação de string do objeto. Este método é chamado quando você usa a
função str() ou print() para exibir o objeto.
__repr__(self): Define a representação do objeto. É chamado quando o objeto é representado no shell
interativo ou quando a função repr() é usada.
Aqui está um exemplo que usa esses
métodos:
No terminal:
Herança e Polimorfismo
Herança:
Herança é um mecanismo que permite que uma classe herde atributos e métodos de outra classe. A classe
que está sendo herdada é chamada de classe pai ou classe base, e a classe que herda é chamada de classe
filha ou classe derivada.
Em Python, você pode definir uma classe filha usando a sintaxe class
NomeDaClasseFilha(NomeDaClassePai):. A classe filha então herda todos os métodos e atributos da classe
pai.
Exemplo:
Neste exemplo, Cachorro é uma classe filha de Animal. Ela herda o método fazer_som() da classe pai, mas o
sobrescreve para fornecer uma implementação específica para cachorros.
Polimorfismo:
Polimorfismo é a capacidade de objetos de diferentes classes responderem ao mesmo método de maneira
diferente. Isso permite que um método se comporte de maneira diferente com base no objeto que o está
chamando.
Em Python, o polimorfismo é alcançado por meio da sobreposição de métodos. Quando um método é
chamado em um objeto, o interpretador Python verifica primeiro a classe do objeto para determinar qual
implementação do método deve ser usada.
Exemplo:
No terminal:
Sobreposição de Métodos:
Sobreposição de métodos ocorre quando uma classe filha redefine um método que já foi definido em sua
classe pai. Isso permite que a classe filha forneça uma implementação específica do método, substituindo a
implementação herdada da classe pai.
Exemplo:
Aqui, a classe Gato herda o método fazer_som() da classe Animal, mas o substitui com uma
implementação específica para gatos.
Encapsulamento
Encapsulamento é um dos princípios da programação orientada a objetos que promove a ideia de esconder
os detalhes de implementação de uma classe e expor apenas uma interface pública para interagir com os
objetos dessa classe. Em Python, o encapsulamento é alcançado principalmente através da convenção de
privacidade usando underscores (_).
Existem duas formas de convenção de privacidade em Python:
1. Um único underscore no início do nome do atributo ou método indica que ele é uma "variável ou
método protegido". Isso significa que ele não deve ser acessado diretamente de fora da classe, mas
ainda é acessível para subclasses. No entanto, nada impede que esses membros sejam acessados
externamente, é apenas uma convenção para indicar que são membros internos da classe.
2. Dois underscores no início do nome do atributo ou método indica que ele é "privado". Isso significa
que ele não deve ser acessado ou modificado de fora da classe. Python realiza uma transformação
de nome chamada "name mangling" (alteração de nome) para evitar o acesso direto a esses
membros de fora da classe.
Vamos ver um exemplo:
No terminal:
É importante observar que, embora o acesso direto a membros privados seja desencorajado em Python,
não há nada que impeça que esses membros sejam acessados de fora da classe. A convenção de
privacidade é uma diretriz para os programadores, não uma restrição imposta pelo interpretador Python.
destrutores de Objetos
Em Python, você pode definir um método especial chamado __del__() que atua como o destrutor de um
objeto. O destrutor é chamado automaticamente quando um objeto não tem mais referências a ele e está
prestes a ser removido da memória. No entanto, o momento exato em que o destrutor é chamado não é
garantido e depende da implementação do coletor de lixo do Python.
Aqui está um exemplo simples de como usar o destrutor em Python:
No terminal:
É importante observar que o uso do destrutor em Python é menos comum do que em outras linguagens de
programação, como C++ ou Java. Isso ocorre porque o gerenciamento de memória em Python é feito
automaticamente pelo coletor de lixo, o que significa que, na maioria dos casos, você não precisa se
preocupar com a liberação explícita de recursos. No entanto, o destrutor pode ser útil para executar ações
de limpeza específicas antes que um objeto seja removido da memória, como fechar arquivos ou conexões
de banco de dados.
No terminal:
Módulo os:
O módulo os fornece uma interface para interagir com o sistema operacional, permitindo operações como
navegação em diretórios, manipulação de arquivos, obtenção de informações sobre o sistema e muito
mais.
Algumas funções úteis do os:
os.getcwd(): Retorna o diretório de trabalho atual.
os.chdir(caminho): Muda o diretório de trabalho atual para o caminho especificado.
os.listdir(caminho): Retorna uma lista dos arquivos e diretórios no caminho especificado.
os.path.exists(caminho): Verifica se o caminho especificado existe no sistema de arquivos.
Exemplo:
No terminal:
Módulo shutil:
O módulo shutil fornece operações de alto nível para manipulação de arquivos e diretórios, permitindo a
cópia, movimentação e exclusão de arquivos e diretórios de forma eficiente.
Módulo sys:
O módulo sys fornece acesso a algumas variáveis e funções usadas ou mantidas pelo interpretador Python
e interage fortemente com o ambiente em execução.
Exemplo de uso:
No terminal:
Módulo math:
O módulo math fornece acesso a funções matemáticas padrão para realizar operações matemáticas mais
avançadas.
Exemplo de uso:
No terminal:
Módulo random:
O módulo random é usado para gerar números aleatórios e realizar operações relacionadas à
aleatoriedade.
Exemplo de uso:
No terminal:
Módulo json:
O módulo json é usado para trabalhar com dados JSON (JavaScript Object Notation), permitindo a
serialização e desserialização de dados.
Exemplo de uso:
No terminal:
Módulo csv:
O módulo csv é usado para ler e escrever
arquivos CSV (Comma-Separated Values),
comumente usados para armazenar dados
tabulares, estilo dados do excel.
Exemplo de uso:
Módulo requests:
O módulo requests é usado para enviar solicitações HTTP em Python, facilitando a interação com APIs da
web e serviços web.
Esse não é um módulo do próprio python, sendo assim precisamos baixa-lo:
pip install requests
Exemplo de uso:
Módulo datetime:
O módulo datetime fornece classes para manipulação de datas e horas de forma eficiente. Alguns dos
objetos principais fornecidos pelo módulo datetime são:
datetime: Representa uma data e hora.
date: Representa uma data.
time: Representa uma hora.
Exemplo de uso:
No terminal:
Módulo timedelta:
O módulo timedelta é usado para representar uma diferença entre duas datas ou horas. Isso é útil para
calcular operações como adição ou subtração de dias, horas, minutos, etc.
Exemplo de uso:
No terminal:
Django
Vamos aprender um pouco a como usar o Django framework de desenvolvimento web do python.
O diretório do nosso projeto deve ser assim:
meuprojeto/
│
├── meuprojeto/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
│
└── meuapp/
├── migrations/
├── templates/
│ └── meuapp/
│ └── index.html
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── tests.py
└── views.py
Primeiro, crie um novo projeto Django e um aplicativo dentro dele. No terminal, execute os seguintes
comandos:
2. Definindo o modelo:
Abra o arquivo meuapp/models.py e defina um modelo simples para os itens que queremos exibir na
página:
Vamos criar alguns itens no banco de dados para exibir na página inicial. No terminal, execute:
Abra o arquivo meuapp/views.py e defina uma view para renderizar a página inicial com a lista de itens:
5. Criando
o template HTML:
Crie um diretório chamado templates dentro do diretório do aplicativo meuapp. Dentro dele, crie uma
pasta chamada meuapp e dentro dela crie um arquivo chamado index.html e adicione o seguinte
conteúdo:
7. Template
8. Configurando URLs:
Abra o arquivo meuprojeto/urls.py e adicione uma
rota para a view index do aplicativo meuapp:
Em seguida, crie um arquivo urls.py dentro do diretório meuapp e adicione o seguinte conteúdo:
No terminal, execute:
Agora você pode abrir um navegador e ir para http://127.0.0.1:8000/ para ver sua página inicial com a lista
de itens. Este é um exemplo simples de como usar HTML, CSS e lógica de site em um projeto Django.
Casting
Em Python, o "casting" refere-se à conversão de um tipo de dado para outro. Existem várias funções
embutidas que permitem fazer isso. Aqui estão algumas das principais funções de "casting" em Python: