Python

Entendendo o MTV do Django

Agora que já sabemos como criar um projeto e como criar uma app com o Django, já estamos prontos para criar nossa primeira aplicação com o framework. Porém, antes disso, precisamos entender como funciona a arquitetura do framework, o que veremos neste artigo.

Arquitetura do Django

A arquitetura do Django é relativamente simples. Basicamente, um projeto Django possui como padrão de projeto o MTV (Model, Template, View), que servem para:

  • Model: Mapeamento do banco de dados para o projeto;
  • Template: Páginas para visualização de dados. Normalmente, é aqui que fica o HTML que será renderizado nos navegadores;
  • View: Lógica de negócio. É aqui que determinamos o que irá acontecer em nosso projeto.

Toda esta arquitetura é interligada e conversam entre si. Uma depende da outra para realizar um determinado serviço e, no final, executar a tarefa que o usuário solicitou. A imagem abaixo descreve exatamente como este processo funciona:


Como visto na imagem, quando o usuário faz uma requisição pelo browser, utilizando uma rota, é executado um método das Views, que utiliza os Models para acessar o banco de dados e retornar as informações. Estas informações são renderizadas pela camada de Template e, finalmente, é renderizado para o usuário pelo navegador.

Django - Fundamentos
Curso de Django - Fundamentos
CONHEÇA O CURSO

Toda esta arquitetura se assemelha bastante com o padrão MVC (Model, View, Controller), utilizado em diversos outros frameworks, como o Laravel, Zend Framework e muitos outros. Comparado ao MVC, as camadas do padrão MTV podem ser consideradas como podemos ver abaixo:

  • M (MTV) = M (MVC): Estas duas camadas possuem a mesma responsabilidade, mapeamento do banco de dados para o projeto;
  • T (MTV) = V (MVC): Estas camadas possuem a mesma responsabilidade, exibir informações para o usuário da aplicação, normalmente utilizando páginas HTML;
  • V (MTV) = C (MVC): Estas duas camadas, apesar de possuírem responsabilidades parecidas, conceitualmente, apresentam algumas diferenças.

No próprio FAQ do Django, há uma área onde os desenvolvedores explicam as diferenças conceituais e o motivo de nomear a camada de visualização de dados como templates e de views a camada de lógica de acesso.

Well, the standard names are debatable.
In our interpretation of MVC, the “view” describes the data that gets presented to the user. It’s not necessarily how the data looks, but which data is presented. The view describes which data you see, not how you see it. It’s a subtle distinction.
So, in our case, a “view” is the Python callback function for a particular URL, because that callback function describes which data is presented.
Furthermore, it’s sensible to separate content from presentation – which is where templates come in. In Django, a “view” describes which data is presented, but a view normally delegates to a template, which describes how the data is presented.
Where does the “controller” fit in, then? In Django’s case, it’s probably the framework itself: the machinery that sends a request to the appropriate view, according to the Django URL configuration.
If you’re hungry for acronyms, you might say that Django is a “MTV” framework – that is, “model”, “template”, and “view.” That breakdown makes much more sense.
At the end of the day, of course, it comes down to getting stuff done. And, regardless of how things are named, Django gets stuff done in a way that’s most logical to us.

Resumidamente, a equipe de desenvolvimento do framework entende que a camada view descreve quais dados serão apresentados ao usuário, não a forma (aparência) que eles serão exibidos. Portanto, no padrão MTV, uma view é uma função que retorna algo para uma solicitação, porque ela define apenas quais dados serão apresentados, não como serão mostrados.

Além disso, é sensato separar o conteúdo da apresentação (por questões de organização e padronização do código). É aí que entra camada template. Com os dados retornados pela view, a template fica responsável por definir a forma que esses dados serão apresentados, normalmente em páginas HTML.

Porém, onde o controller se encaixa? No Django, os desenvolvedores do framework entendem que esta camada é a própria estrutura do projeto. É este mecanismo que envia uma solicitação para a view adequada de acordo com a configuração de rotas do Django. E isso faz sentido! Se pararmos para pensar, o controlador da aplicação é o próprio conjunto de bibliotecas que compõe o projeto. A view é mais adequada a retornar os dados a serem visualizados, que serão exibidos ao usuário por meio de templates.

Agora que a arquitetura do Django ficou clara (espero :p), nós já estamos aptos a iniciar o desenvolvimento da nossa primeiro aplicação e, finalmente, programar utilizando este incrível framework. E é exatamente isso que veremos no próximo artigo. Até lá!

Criando um app com Django

O Django é um ótimo framework para desenvolvimento de aplicações web. Com ele, conseguimos construir aplicações de alto desempenho, prezando pela legibilidade e reaproveitamento de código.

Por padrão, um projeto Django é dividido em diversas apps. Cada app é responsável por um módulo da aplicação e permite uma maior organização e legibilidade do projeto. Neste artigo, então, veremos como criar e configurar uma app em um projeto Django.

Criando o projeto

O primeiro passo para criarmos nosso projeto é configurar nosso ambiente de desenvolvimento, conforme mostrado no artigo como configurar nosso ambiente de desenvolvimento com Django, já que precisamos de uma série de ferramentas para que tudo funcione corretamente.

Basicamente, a configuração do ambiente se resume em instalar o Python, o PIP e o PyCharm. Todas estas ferramentas são necessárias para que possamos desenvolver nossos projetos sem dor de cabeça.

Feito isso, o próximo passo é a criação do projeto, conforme mostrado no artigo como criar o primeiro projeto Django utilizando o PyCharm. Após criar o projeto e executá-lo, teremos a seguinte tela como resposta:

Django - Fundamentos
Curso de Django - Fundamentos
CONHEÇA O CURSO

Com o projeto criado, o próximo passo é criar nossa aplicação. Basicamente, o Django é dividido em diversas apps em um mesmo projeto. Isso facilita o reaproveitamento de código e organização do projeto como um todo.

Para criar uma app no Django, utilizamos o seguinte comando:

python manage.py startapp nome_da_app

Ao executar o comando acima (alterando o nome_da_app para o nome da sua aplicação), uma série de arquivos é criada:

Django - Módulo administrativo Django Admin
Curso de Django - Módulo administrativo Django Admin
CONHEÇA O CURSO

Estes arquivos são:

  • Diretório migrations: Diretório responsável por armazenar os arquivos de migração para o banco de dados de uma aplicação Django.
  • admin.py: Arquivo responsável por definir os models a serem utilizados no módulo administrativo do Django.
  • apps.py: Arquivo responsável pela configuração da app do projeto Django.
  • models.py: Arquivo responsável por definir os modelos da aplicação. Basicamente, um modelo é a representação das tabelas a serem criadas no banco de dados.
  • tests.py: Arquivo responsável por definir as regras de testes da aplicação.
  • views.py: Arquivo responsável por definir as regras de negócio do app.

Ao criar a aplicação, precisamos registrá-la no arquivo settings.py do projeto. Isso fará com que o projeto Django saiba que essa app faz parte do projeto e que ele pode gerenciá-la. Para fazer isso, no arquivo settings.py, adicionamos o nome da app no array INSTALLED_APPS, como podemos ver abaixo:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app'
]

Feito isso, o projeto Django já sabe que a aplicação app faz parte do projeto e já estamos prontos para iniciar seu desenvolvimento, o que faremos no próximo artigo desta série 🙂

Até lá!

O que é Python?

Criado por Guido Van Rossum em meados dos anos 90, o Python é uma linguagem de programação de alto nível, que possui as seguintes características:

Python - Fundamentos
Curso de Python - Fundamentos
CONHEÇA O CURSO
  • Interpretada – O código criado com o Python não é compilado;
  • De script – Com o Python podemos criar scripts para automatizar diversas tarefas repetitivas;
  • Orientada a objetos – O Python nos permite criar programas utilizando um dos paradigmas mais utilizados no mercado, a orientação a objetos;
  • De tipagem dinâmica – As variáveis no Python podem armazenar qualquer tipo de dados, independente do seu valor atual.

É uma linguagem de programação multiparadigma, ou seja, suporta diversos paradigmas de desenvolvimento, como, orientado à objetos, funcional, imperativo, interpretado, entre outros. Desta forma, com o Python um mesmo programa pode ser feito utilizando diferentes paradigmas ou um único programa poderá ser desenvolvido utilizando mais de um paradigma.

Multiplataforma e open source, é uma linguagem que ganhou destaque nos últimos anos por possuir uma ótima curva de aprendizagem, ser uma linguagem leve e ter se tornado uma das principais linguagem para o desenvolvimento de IA, Machine Learning e Big Data, áreas em grande crescimento nos últimos anos.

Aprender Python em 2020 tem sido uma excelente escolha, pois segundo o StackOverflow, foi uma das linguagens de programação mais estudadas no ano de 2019.

Aplicações do Python

Como dito anteriormente, seu uso tem se tornado destaque em áreas atuais como: Machine Learning, Data Science, Big Data e Desenvolvimento Web.

  • Para o desenvolvimento web, podemos contar com uma poderosa e simples linguagem, que possui dois importantes frameworks, o Django e o Flask. Com esses dois frameworks, podemos desenvolver aplicações web poderosas e que, com certeza, irão atender todas as demandas do mercado.
Django - Fundamentos
Curso de Django - Fundamentos
CONHEÇA O CURSO
  • O Python também é uma das principais tecnologias para trabalhar com Data Science. Muito disso por conta de sua simplicidade e bibliotecas para trabalhar com análise de dados, como o Pandas, uma das principais e mais poderosas do mercado.

  • Big Data é a análise e interpretação de grandes volumes de dados. É, sem dúvidas, uma ferramenta fundamental para que as empresas possam obter vantagens competitivas em diversos segmentos. Assim como o Data Science e Machine Learning, o Python possui diversas bibliotecas para trabalhar com Big Data, já que estas áreas estão estritamente relacionadas. Várias são as bibliotecas para trabalhar com Big Data no Python, como a Pandas (citada anteriormente), NumPy, Matplotlib, Scikit-Learn, entre outras.

  • Machine Learning, ou em sua tradução livre “Aprendizado de máquina”, é a área da ciência da computação que tem como objetivo a análise de dados que automatiza a construção de modelos analíticos. Assim como o Big Data, o Python é uma das principais tecnologias para trabalhar com Machine Learning, uma área de grande crescente na última década.

Vantagens de utilizar o Python

Aprender Python possui diversas vantagens, dentre elas podemos citar as seguintes:

  • Possui uma grande comunidade;
  • Multiplataforma;
  • Possui uma curva de aprendizagem baixa;
  • Pode ser utilizada em diversos segmentos;
  • É amplamente utilizado em diversas empresas, entre outras.

Sintaxe do Python

Conhecido por possuir uma sintaxe simples, o Python possui algumas características marcantes da linguagem:

  • Não utiliza ponto e vírgula (;)para finalizar uma instrução;
  • Utiliza indentação por espaços;
  • Uma variável pode armazenar diferentes tipos de dados;
  • Não há chaves ({}) para delimitar o início e final de um bloco de código.

No código escrito em Python abaixo pode-se visualizar algumas das características citadas acima:

print("Meu primeiro programa em Python")
nome_variavel = 5

if nome_variavel == 5:
    print("O número é 5")
else:
    print("O número não é 5")

Você sabia que consegue executar o código acima utilizando o OnlineGDB? Uma ferramenta para executar códigos de diferentes linguagens de programação. Não deixe de conferir! =)

Python - Orientação a objetos
Curso de Python - Orientação a objetos
CONHEÇA O CURSO

Podemos concluir que…

O Python, hoje, é umas das principais linguagens de desenvolvimento do mercado. Como vimos neste artigo, com o Python podemos desenvolver desde aplicações web até inteligências artificiais, o que a torna uma excelente opção de linguagem para aprender e trabalhar.

Manipulando arquivos com Python

É de grande importância para qualquer desenvolvedor saber manipular arquivos, seja para criar backups, consumir uma lista de alguma planilha ou qualquer motivo que seja. Por isso, a maioria das linguagens de programação possuem meios para essa manipulação.

No Python não é diferente e a manipulação de arquivos é mais simples do que você possa imaginar. Por isso, veremos neste artigo como realizar as principais operações com arquivos utilizando o Python.

Criando e abrindo arquivos

Para criar arquivos (e, consequentemente, abrí-los), utilizamos o método open(). Este método irá abrir o arquivo que passarmos como parâmetro com um determinado modo de uso (que também será passado como parâmetro).

Há diversos modos de uso, como podemos ver na imagem abaixo:

Estes modos são passados como segundo parâmetro do método open. Ou seja, se quisermos abrir um arquivo em modo de escrita, utilizamos a seguinte sintaxe:

arquivo = open("contatos.txt", "a")

Passamos o nome do arquivo e sua extensão, além do modo que queremos utilizar o arquivo. Este modo pode ser alterado conforme as opções da imagem anterior.

Sendo assim, ao executar o código acima, o arquivo contatos.txt será aberto em modo escrita (caso ele não exista, um novo arquivo será criado):

Escrevendo dados em arquivos

Agora que já sabemos como criar arquivos e seus diferentes modos de uso, podemos realizar as primeiras manipulações. Neste tópico, veremos como escrever dados e salvar em arquivo utilizando o Python.

Para isso, a linguagem fornece dois métodos. O primeiro é o método write() que recebe uma string como parâmetro e a insere no arquivo:

arquivo = open("contatos.txt", "a")
arquivo.write("Olá, mundo!")

Com a execução do código acima, a string Olá, mundo! será inserida no arquivo texto.txt:

O segundo método é o writelines() que recebe um objeto iterável (seja uma lista, uma tupla, um dicionário, etc). Com este método, várias linhas poderão ser inseridas no arquivo, diferente do método write() que só recebe uma string por vez:

arquivo = open("texto.txt", "a")

frases = list()
frases.append("TreinaWeb \n")
frases.append("Python \n")
frases.append("Arquivos \n")
frases.append("Django \n")

arquivo.writelines(frases)

Como a lista é um objeto iterável, podemos passá-la como parâmetro do método writelines(). Utilizamos, também, o \n para saltar a linha ao escrevê-la no arquivo. Com isso, o resultado será o seguinte:

Desenvolvedor Python Júnior
Formação: Desenvolvedor Python Júnior
Aprenda os principais conceitos do Python (uso de variáveis, estruturas condicionais e estruturas de decisão), como trabalhar com orientação à objetos (métodos, construtores, destrutores, classes, herança, polimorfismo e duck-typing) e estruturas de dados (Listas, Filas, Pilhas, Árvores Binárias, Dicionários, Conjuntos, Tabelas de Espalhamento e Mapas).
CONHEÇA A FORMAÇÃO

Lendo dados de arquivos

Além de escrever dados em arquivos, precisamos, também, saber ler os dados que os arquivos possuem. Para isso, existem dois métodos, o primeiro é o readline() que irá ler uma quantidade N de caracteres da primeira linha passadas como parâmetro:

arquivo = open("texto.txt", "r")

print(arquivo.readline(3))

A execução acima retornará os três primeiros caracteres da primeira linha do arquivo:


O segundo método disponível é o readlines(). Este método irá retornar todas as linhas do arquivo:

arquivo = open("texto.txt", "r")

print(arquivo.readlines())

Considerações finais

Saber trabalhar com arquivos é essencial para qualquer desenvolvedor. É certo que em sua vida como desenvolvedor, em algum momento você terá que lidar com esta situação.

Como vimos neste artigo, a manipulação de arquivos com Python é uma tarefa bem simples, porém de grande importância.

Manipulando dicionários no Python

Como vimos no artigo sobre as principais estruturas de dados no Python, os dicionários são coleções de itens desordenados com uma diferença bem grande quando comparados às outras coleções (lists, sets, tuples, etc): um elemento dentro de um dicionário possui uma chave atrelada a ele, uma espécie de identificador.

Sendo assim, é muito utilizado quando queremos armazenar dados de forma organizada e que possuem identificação única (como acontece em bancos de dados).

Neste artigo, veremos como manipular os dicionários com os principais métodos disponibilizados pela API de Collections do Python.

meu_dicionario = {1 : 'Fabio', 2 : 'Maria', 3 : 'João', 4 : 'José'}
print(type(meu_dicionario))

meu_dicionario_2 = dict({1 : 'Fabio', 2 : 'Maria', 3 : 'João', 4 : 'José'})
print(type(meu_dicionario_2))
Python - Fundamentos
Curso de Python - Fundamentos
CONHEÇA O CURSO

O código acima, que pode ser visto no seguinte link (https://onlinegdb.com/BJhaeI1fL), criará dois dicionários, o primeiro utilizando as chaves ({}) e separando os elementos das suas chaves com dois pontos (:) e o segundo utilizando o método dict(). As duas formas terão o mesmo resultado:

Retornando elementos pelo índice

Para retornar um elemento pelo seu índice de um dicionário, há duas formas. A primeira é passando, entre colchetes ([]) o índice do elemento desejado. Já a segunda é utilizando o método get() com a posição do elemento como parâmetro:

meu_dicionario = {1 : 'Fabio', 2 : 'Maria', 3 : 'João', 4 : 'José'}

#get()
print(meu_dicionario[2])
print(meu_dicionario.get(4))

A execução do código acima terá o seguinte resultado (https://onlinegdb.com/rJxkr81GI):

Retornando o tamanho de um dicionário

Para retornar o tamanho de um dicionário, podemos utilizar o método len() e passar o dicionário a ser analisado como parâmetro:

meu_dicionario = {1 : 'Fabio', 2 : 'Maria', 3 : 'João', 4 : 'José'}

#len()
print(len(meu_dicionario))

A execução do código acima terá o seguinte resultado (https://onlinegdb.com/HyIcSU1fL):

Adicionando elementos em um dicionário

Para inserir novos elementos em um dicionário, existem duas formas. A primeira é passar o valor ao índice de um dicionário e a segunda é utilizando o método update(), passando como parâmetro a chave e o elemento a ser adicionado:

meu_dicionario = {1 : 'Fabio', 2 : 'Maria', 3 : 'João', 4 : 'José'}

meu_dicionario[5] = 'Joaquina'
print(meu_dicionario)

meu_dicionario.update({6: 'Pedro'})
print(meu_dicionario)

A execução do código acima terá o seguinte resultado (https://onlinegdb.com/rkzPLI1zI):

Removendo elementos de um dicionário

Para remover elementos de um dicionário utilizamos o método pop() seguido do índice do elemento que deve ser removido. Isso fará com que o elemento seja removido, como podemos ver no código abaixo:

meu_dicionario = {1 : 'Fabio', 2 : 'Maria', 3 : 'João', 4 : 'José'}

#pop()
meu_dicionario.pop(2)
print(meu_dicionario)

A execução do código acima terá o seguinte resultado (https://onlinegdb.com/H1u2ILkfL):

Conclusão

Os dicionários provêem uma ótima forma para armazenar dados organizados e com um padrão simples de entender, como vimos neste artigo. Saber manipulá-los é fundamental para utilizá-los em nossos projetos.

Manipulando sets no Python

Os sets são uma coleção de itens desordenada, parcialmente imutável e que não podem conter elementos duplicados. Por ser parcialmente imutável, os sets possuem permissão de adição e remoção de elementos.

Além disso, os sets são utilizados, normalmente, com operações matemáticas de união, interseção e diferença simétrica, conforme veremos nos próximos tópicos.

Neste artigo, veremos como manipular os sets com os principais métodos disponibilizados pela API de Collections do Python.

Declarando Sets

Para declarar um set no Python é bem simples. Seus elementos devem estar entre chaves ({}) ou utilizando o método set() do próprio Python, como podemos ver abaixo:

 # Declaração de um set
meu_set = {1, 2, 3, 4, 1}
print(type(meu_set))

meu_set_2 = set([1, 2, 8, 9, 10])
print(type(meu_set_2))

O código acima, que pode ser visto no seguinte link (https://onlinegdb.com/rkPa6QyZ8), criará dois sets, o primeiro utilizando as chaves ({}) e separando os elementos por vírgula (,) e o segundo utilizando o método set(). As duas formas terão o mesmo resultado:

Adicionando, atualizando e removendo elementos dos Sets

Os sets permitem as operações de adição, atualização e remoção de elementos. Para isso, existe um método para cada funcionalidade, como podemos ver abaixo:

meu_set = {1, 2, 3, 4, 1}

# Adicionando elementos
meu_set.add(2)
print("Adição", meu_set)

# Atualizando set
meu_set.update([3, 4, 5, 6])
print("Atualição", meu_set)

# Removendo elemento
meu_set.discard(2)
print("Remoção", meu_set)

Como podemos ver no trecho de código acima, o método add() é responsável por adicionar um elemento ao set, desde que ele já não esteja adicionado, pois os sets não permitem elementos duplicados.

Python - Fundamentos
Curso de Python - Fundamentos
CONHEÇA O CURSO

Já o método update() permite atualizar os sets e adicionar os elementos (que não estejam duplicados) em sua estrutura.

Por fim, o método discard() permite a remoção de um elemento do set.

Operações matemáticas com Sets

Os sets, além das operações de manipulação vistas anteriormente, permitem operações matemáticas como união, interseção, diferença e diferença simétrica, conforme veremos abaixo.

meu_set = {1, 2, 3, 4, 1}
meu_set_2 = set([1, 2, 8, 9, 10])

# União
print("União")
print(meu_set | meu_set_2)
print(meu_set.union(meu_set_2))

# Interseção
print("Interseção")
print(meu_set & meu_set_2)
print(meu_set.intersection(meu_set_2))

# Diferença
print("Diferença")
print(meu_set - meu_set_2)
print(meu_set.difference(meu_set_2))

# Diferença Simétrica
print("Diferença Simétrica")
print(meu_set ^ meu_set_2)
print(meu_set.symmetric_difference(meu_set_2))

O resultado da execução acima pode ser vista no seguinte link: https://onlinegdb.com/Sk_hsEJ-U.


Na união ( | ), todos os elementos dos dois sets serão “unidos” em um, formando um único set com todos os elementos, sem repetí-los, claro.

Na Interseção ( & ), apenas os elementos que estiverem nos dois sets restarão.

Já na diferença ( – ), restarão apenas os elementos que estiverem em um dos set, mas não no segundo.

Por fim, na diferença simétrica ( ^ ), apenas os elementos que estiverem nos dois sets, porém que não se repitam, serão exibidos.

Afinal, por que devo aprender Python para 2020?

O que é Python?

Linguagem de programação de alto nível, o Python foi lançado em 1991 por Guido Van Rossum, possuindo uma tipagem dinâmica.

Com o passar dos anos, o Python conquistou o mercado e tem alcançado programadores fiéis ao redor do mundo, não podendo negar que a linguagem alcançou um patamar elevado e muitos projetos e empresas têm apostado na linguagem em seus novos projetos.

É uma linguagem que prioriza a legibilidade do código, combinando uma sintaxe concisa e clara. Com seus recursos poderosos de sua biblioteca padrão e por muitos módulos e frameworks, apostar no Python em 2020 poderá ser uma excelente escolha, e é isto que veremos neste artigo.

Python - Fundamentos
Curso de Python - Fundamentos
CONHEÇA O CURSO

Principais aplicações do Python

Quando decidimos iniciar uma nova linguagem, nada melhor que conhecer as suas aplicações para, assim, decidir se esta escolha nos levará ao que procuramos.

Com o Python não é diferente, e dentre suas principais aplicações podemos citar:

  • Data Science;
  • Machine Learning;
  • Big Data;
  • Desenvolvimento Web (Django e Flask).
R - Introdução a Data Science
Curso de R - Introdução a Data Science
CONHEÇA O CURSO

Data Science

Data Science, ou Ciência de dados, é uma área voltada ao estudo da análise de dados, ou seja, dada uma quantidade de dados, as análises dos mesmo e as conclusões que serão tiradas a partir da sua extração tem se tornado bastante importante para diversas empresas.

Tende a transformar a grande quantidades de dados brutos em insights de negócios, a fim de auxiliar as empresas em suas tomadas de decisão, atingindo assim melhores resultados.

Em nosso blog já abordamos mais do tema e caso queira saber mais a respeito de “O que é Data Science”, recomendo a leitura.

Nesta área, o Python é uma das principais tecnologias. Muito disso por conta de sua simplicidade e bibliotecas para trabalhar com análise de dados, como o Pandas, uma das principais e mais poderosas do mercado.

R - Introdução ao Machine Learning
Curso de R - Introdução ao Machine Learning
CONHEÇA O CURSO

Machine Learning

Machine Learning, ou em sua tradução livre “Aprendizado de máquina”, é a área da ciência da computação que tem como objetivo a análise de dados que automatiza a construção de modelos analíticos.

Ou seja, faz parte do conceito de inteligência artificial, e estuda os meios para que as máquinas possam realizar tarefas que seriam desempenhadas por pessoas. Baseia-se na ideia que sistemas podem aprender com os dados, identificando padrões e tomando decisões utilizando o mínimo da intervenção humana.

Aqui no blog possuímos o artigo “O que é e como funciona Machine Learning” que vale a pena a leitura.

Assim como o Big Data, o Python é uma das principais tecnologias para trabalhar com Machine Learning, uma área de grande crescente na última década.

Big Data

Big Data é a análise e interpretação de grandes volumes de dados.

É, sem dúvidas, uma ferramenta fundamental para que as empresas possam obter vantagens competitivas em diversas segmentos.

O termo surgiu no final da década de 90, utilizado para nomear quantidades cada vez mais crescentes e não estruturadas de dados que eram gerados a cada segundo. Atualmente, torna-se essencial no mercado, tendo suas ferramentas importantes na definição de estratégias de marketing, visando o aumento da produtividade, reduzindo assim seus custos e auxiliando na tomada de decisão inteligente, gerando valor ao negócio.

Para entender melhor “Big Data: o que é e qual a sua importância?” aqui no blog possuímos um artigo bem completo que te auxiliará a respeito.

Assim como o Data Science e Machine Learning, o Python também está pronto e possui diversas bibliotecas para trabalhar com Big Data, já que estas áreas estão estritamente relacionadas.

Várias são as bibliotecas para trabalhar com Big Data no Python, como a Pandas (citada anteriormente), NumPy, Matplotlib, Scikit-Learn, entre outras.

Django - Fundamentos
Curso de Django - Fundamentos
CONHEÇA O CURSO

Desenvolvimento Web (Django e Flask)

Desenvolvimento web é o termo utilizado para definir sites ou aplicativos que podem ser acessados diretamente pelo navegador web, seja em computadores ou dispositivos móveis.

Além de todas as outras aplicações do Python citadas anteriormente, a linguagem ainda é uma ótima alternativa para a criação de aplicações web de forma simples e poderosa. Para isso, o Python conta com dois dos principais frameworks para desenvolvimento web do mercado, o Django e o Flask.
Com esses dois frameworks, podemos desenvolver aplicações web poderosas e que, com certeza, irá atender todas as demandas do mercado.

Aqui no blog possuímos um artigo sobre os principais Frameworks de desenvolvimento web em Python, “Django e Flask”.

Uso do Python no mercado de trabalho

Apontada pelo Stack Overflow como uma das principais linguagens de programação para o ano de 2019, o Python possui uma grande demanda de trabalho, o que acarreta em diversas vagas de emprego em todo o mundo, e o mantém como uma ótima alternativa para o ano de 2020.

Nas imagens abaixo, podemos ver alguns exemplos de vagas para profissionais com conhecimentos em Python no Brasil.

Podemos concluir que…

Como vimos neste artigo, o Python é uma das principais linguagens para se trabalhar no ano de 2020. Muito disso por conta da sua polivalência, já que é possível utilizá-la nas áreas de Big Data, Machine Learning, Análise de Dados, desenvolvimento web e muitas outras, áreas essas que estão em constante crescimento nos últimos anos e tendem a continuar assim.

Aqui na TreinaWeb, possuímos o mais completo conjunto de cursos para você aprender a desenvolver com Python e sair pronto para o mercado de trabalho.

Manipulando tuplas no Python

Como vimos no artigo “Principais estruturas de dados no Python”, as tuplas são estruturas bastante similares às listas, com apenas uma diferença: os elementos inseridos em uma tupla não podem ser alterados, diferente de uma lista onde podem ser alterados livremente. Sendo assim, em um primeiro momento, podemos pensar em uma tupla como uma lista que não pode ser alterada, mas não é bem assim…

É certo que as tuplas possuem diversas características das listas, porém os usos são distintos. As listas são destinadas a serem sequências homogêneas, enquanto que as Tuplas são estruturas de dados heterogêneas.

Sendo assim, apesar de bastante similares, a tupla é utilizada para armazenar dados de tipos diferentes, enquanto que a lista é para dados do mesmo tipo. No Python, há diversos métodos para manipulação de tuplas, como veremos no decorrer deste artigo.

Python - Collections
Curso de Python - Collections
CONHEÇA O CURSO

Declarando Tuplas

A sintaxe para criação de uma tupla, assim como uma lista, também é bem simples. Ao invés de se utilizar colchetes (listas), são utilizados parênteses, como podemos ver abaixo:

nome_da_tupla1 = (1, 2, 3) #tupla de inteiros
nome_da_tupla2 = (1, "olá", 1.5) #tupla heterogênea

O resultado da execução do código acima pode ser visto no seguinte link: https://onlinegdb.com/r1Jr4CdyI

Contando elementos em uma Tupla

Para verificar a quantidade de elementos existentes em uma tupla, podemos utilizar o método count() e enviando o valor que queremos verificar como parâmetro:

nome_da_tupla1 = (1, 2, 3) #tupla de inteiros

print(nome_da_tupla1.count(1))
nome_da_tupla1 = (1, 1, 2, 3)
print(nome_da_tupla1.count(1))

O resultado da execução acima pode ser visto na imagem abaixo e no seguinte link: https://onlinegdb.com/r13yIDi18

Exibir o índice de um determinado elemento

Para retornar o índice de um determinado elemento em uma tupla, utilizamos o método index(), enviando o valor que queremos pesquisar como parâmetro:

nome_da_tupla1 = (1, 2, 3) #tupla de inteiros

print(nome_da_tupla1.index(3))

O resultado da execução acima pode ser visto na imagem abaixo e no seguinte link: https://onlinegdb.com/Hk1WPvikL

Verificar a existência de um elemento na Tupla

Um outro recurso muito utilizado em tuplas é a verificação da existência de um determinado elemento. Para isso, utilizamos o in do Python, como podemos ver abaixo:

nome_da_tupla1 = (1, 2, 3) #tupla de inteiros

print(2 in nome_da_tupla1)
print(22 in nome_da_tupla1)

O código acima retornará um True caso o elemento seja encontrado e um False caso não (https://onlinegdb.com/B1iB_wiJU):

Considerações finais

Assim como as listas, as tuplas são ótimas formas para armazenamento de elementos, principalmente se você não quer permitir que estes elementos sejam alterados. Neste artigo vimos algumas das principais funcionalidades das tuplas e suas aplicações.

No próximo artigo desta série veremos como manipular outras estruturas de dados com o Python. Até lá 🙂

Manipulando listas no Python

Vimos no último artigo as principais estruturas de dados presentes no Python, dentre elas, as listas, estrutura mais básica do Python.

Basicamente, uma lista é a estrutura de dados mais básica do Python e armazena os dados em sequência, onde cada elemento possui sua posição na lista, denominada de índice. O primeiro elemento é sempre o índice zero e a cada elemento inserido na lista esse valor é incrementado.

No Python, há diversos métodos para manipulação de listas, conforme veremos neste artigo.

Declarando Listas

A declaração de listas no Python é bem simples. Basicamente, devemos informar, entre colchetes ([]) o conteúdo da lista separados em vírgulas (,):

lista_simples_inteiro = [1, 2, 3, 8, 14, 4, 5]
listas_simples_string = ["Olá", "Mundo"]
lista_simples_mesclada = [1, 2, 3, "Olá, mundo", True, 1.5]

Nos exemplos acima, estamos declarando três listas com diferentes tipos de dados. Vale lembrar que uma lista pode conter diferentes tipos de dados, porém não é recomendado a utilização de uma lista para armazenar dados de diferentes tipos em uma mesma estrutura. Nestes casos, a Tupla é a estrutura de dados mais recomendada.

Imprimindo Listas

A impressão de listas no Python é muito simples. Basicamente, utilizamos o método print() e enviamos o nome da lista de queremos imprimir como parâmetro:

lista_simples_inteiro = [1, 2, 3, 8, 14, 4, 5]
listas_simples_string = ["Olá", "Mundo"]
lista_simples_mesclada = [1, 2, 3, "Olá, mundo", True, 1.5]

print(lista_simples_inteiro)
print(listas_simples_string)
print(lista_simples_mesclada)

O resultado da execução do código acima pode ser visto no seguinte link: https://onlinegdb.com/HkKIutU6B:

Inserindo elementos na lista

A inserção de elementos em uma lista pode ser feito por dois métodos, o append() e o insert(). O método append() insere o elemento sempre no final da lista, já o insert() irá inserir o elemento em uma posição específica:

lista_simples_inteiro = [1, 2, 3, 8, 14, 4, 5]

print(lista_simples_inteiro)

# Append()
lista_simples_inteiro.append(6)
print(lista_simples_inteiro)

# Insert()
lista_simples_inteiro.insert(2, 100)
print(lista_simples_inteiro)
Python - Estrutura de dados - Parte 1
Curso de Python - Estrutura de dados - Parte 1
CONHEÇA O CURSO

Com a execução do código acima, teremos o seguinte resultado (https://onlinegdb.com/B1Fr7qUTH):

Pode-se notar que o método append() inseriu o valor 6 no final da lista, já o método insert() inseriu o elemento 100 na posição 2 da lista.

Retornando tamanho da Lista

Para retornar o tamanho de uma lista no Python, podemos utilizar o método len() e passar a lista como parâmetro (https://onlinegdb.com/Bklftc86H):

lista_simples_inteiro = [1, 2, 3, 8, 14, 4, 5]

print(lista_simples_inteiro)

# Len()
print(len(lista_simples_inteiro))

Removendo elementos na lista

Para remover elementos de uma lista, utilizamos o método remove(), passando o elemento que queremos excluir da lista como parâmetro (https://onlinegdb.com/ryWR55U6r):

lista_simples_inteiro = [1, 2, 3, 8, 14, 4, 5]

print(lista_simples_inteiro)

# Remove()
lista_simples_inteiro.remove(5)
print(lista_simples_inteiro)

Dividindo listas

No Python, há duas formas de “cortar” listas. A primeira é utilizando os colchetes ([]) para determinar o intervalo do “corte” e a segunda é utilizando o método slice(), passando o intervalo como parâmetro:

lista_simples_inteiro = [1, 2, 3, 8, 14, 4, 5]

print(lista_simples_inteiro)

print(lista_simples_inteiro[0:4]) # Cortar lista da posição 0 a 4 (sem incluir a 4)
print(lista_simples_inteiro[1:]) # Cortar lista da posição 1 em diante
print(lista_simples_inteiro[:3]) # Cortar lista do início até a posição 3 (sem incluir a 3)
nova_lista = lista_simples_inteiro[:3] # Criar uma nova lista com base no corte de outra lista
print(nova_lista)

intervalo = slice(1, 4) # Cortar a lista a partir da posição 1 até a 4 (sem incluir a 4)
print(lista_simples_inteiro[intervalo])

Conclusão

As listas são uma ótima forma para armazenar elementos, como vimos neste artigo. Saber manipulá-las é fundamental para que possamos desenvolver nossos projetos e utilizar os melhores recursos da linguagem.

Porém, no Python, as listas não são as únicas estruturas de dados existentes. No próximo artigo desta série veremos como manipular uma outra estrutura bastante utilizada, os Sets.

Principais Estruturas de Dados no Python

No Python, podemos utilizar diversos tipos de estruturas de dados. Estas estruturas resolvem um tipo de problema e podem ser úteis em diversas situações. As principais estruturas são as Listas, Sets, Dicionários e Tuplas e neste artigo veremos as diferenças e principais características de cada uma.

Listas

Uma lista é a estrutura de dados mais básica do Python e armazena os dados em sequência, onde cada elemento possui sua posição na lista, denominada de índice. O primeiro elemento é sempre o índice zero e a cada elemento inserido na lista esse valor é incrementado.

No Python, uma lista pode armazenar qualquer tipo de dado primitivo (string, inteiro, float, etc). Na imagem abaixo podemos ver como uma lista se comporta:

Declarando Listas

Para a criação de uma lista no Python, a sintaxe é a seguinte:

nome_da_lista = [] # Criação de uma lista vazia
nome_da_lista = [1, 2, 3] # Criação de uma lista de inteiros
nome_da_lista = [1, "Olá, mundo!", 1.1] # Criação de uma lista com vários tipos diferentes

Podemos também criar listas dentro de outras listas. Essas são chamadas de nested lists e sua sintaxe é a seguinte:

nome_da_lista = ["Olá, mundo",  [1, 2, 3], ["outra_lista"]]

Possuímos aqui no blog um artigo que mostra os principais métodos de manipulação de listas no Python.

Tuplas

Uma tupla é uma estrutura bastante similar a uma lista, com apenas uma diferença: os elementos inseridos em uma tupla não podem ser alterados, diferente de uma lista onde podem ser alterados livremente. Sendo assim, em um primeiro momento, podemos pensar em uma tupla como uma lista que não pode ser alterada, mas não é bem assim…

É certo que as tuplas possuem diversas características das listas, porém os usos são distintos. As listas são destinadas a serem sequências homogêneas, enquanto que as Tuplas são estruturas de dados heterogêneas.

Sendo assim, apesar de bastante similares, a tupla é utilizada para armazenar dados de tipos diferentes, enquanto que a lista é para dados do mesmo tipo.

Tuplas x Listas

As tuplas possuem algumas vantagens com relação às listas, que são:

  • Como as tuplas são imutáveis, a iteração sobre elas é mais rápida e, consequentemente, possuem um ganho de desempenho com relação às listas;
  • Tuplas podem ser utilizadas como chave para um dicionário, já que seus elementos são imutáveis. Já com a lista, isso não é possível;
  • Se for necessário armazenar dados que não serão alterados, utilize uma tupla. Isso garantirá que esses sejam protegidos de alterações posteriores.

Declarando Tuplas

A sintaxe para criação de uma tupla, assim como uma lista, também é bem simples. Ao invés de se utilizar colchetes (listas), são utilizados parênteses, como podemos ver abaixo:

nome_da_tupla = (1, 2, 3) #tupla de inteiros
nome_da_tupla = (1, "olá", 1.5) #tupla heterogênea

Possuímos aqui no blog um artigo que mostra os principais métodos de manipulação de tuplas no Python.

Sets

No Python, os sets são uma coleção de itens desordenada, parcialmente imutável e que não podem conter elementos duplicados. Por ser parcialmente imutável, os sets possuem permissão de adição e remoção de elementos.

Além disso, os sets são utilizados, normalmente, com operações matemáticas de união, interseção e diferença simétrica, conforme veremos nos próximos tópicos.

Desenvolvedor Python Júnior
Formação: Desenvolvedor Python Júnior
Aprenda os principais conceitos do Python (uso de variáveis, estruturas condicionais e estruturas de decisão), como trabalhar com orientação à objetos (métodos, construtores, destrutores, classes, herança, polimorfismo e duck-typing) e estruturas de dados (Listas, Filas, Pilhas, Árvores Binárias, Dicionários, Conjuntos, Tabelas de Espalhamento e Mapas).
CONHEÇA A FORMAÇÃO

Declarando Sets

Para a criação de um set no Python há duas formas: A primeira é bem similar às listas e tuplas, porém utilizando chaves {} para determinar os elementos do set:

nome_do_set = {1, 2, 3, 4}

A segunda é utilizando o método set presente no Python:

nome_do_set = set([1, 2, 3, 4])

Possuímos aqui no blog um artigo que mostra os principais métodos de manipulação de sets no Python.

Dicionários

No Python, os dicionários são coleções de itens desordenados com uma diferença bem grande quando comparados às outras coleções (lists, sets, tuples, etc): um elemento dentro de um dicionário possui uma chave atrelada a ele, uma espécie de identificador. Sendo assim, é muito utilizado quando queremos armazenar dados de forma organizada e que possuem identificação única (como acontece em bancos de dados).

Um dicionário, portanto, pode ser visto como a figura abaixo:


Onde cada valor é “atrelado” à uma chave, seu identificador. Vale lembrar que, por necessitar que cada valor possua uma chave relacionada a ele, as chaves dos dicionários devem ser únicas para que possam ser acessadas, também, através do seu índice.

As chaves também não são armazenadas em qualquer ordem, elas apenas são associadas aos valores que pertencem.

Declarando Dicionários

Existem duas formas de se criar um dicionário utilizando o Python. A primeira delas é utilizando chaves ( {} ) e separando os elementos das chaves com dois pontos ( : ) e os outros elementos por vírgula ( , ):

nome_do_dicionario = {1: ‘João’, 2: ‘José’}
nome_do_dicionario = {‘nome’: ‘João’, ‘sobrenome’: ‘Silva’}

A segunda forma é utilizando o método dict() com o dicionário sendo passado como parâmetro:

nome_do_dicionario = dict({1: ‘João’, 2: ‘José’})
nome_do_dicionario = dict({‘nome’: ‘João’, ‘sobrenome’: ‘Silva’})

Possuímos aqui no blog um artigo que mostra os principais métodos de manipulação de sets no Python.

Animou?

No Python, possuímos diversas estruturas prontas para utilizar, como vimos neste artigo, e cada uma resolve um tipo de problema. No próximo artigo, iniciaremos os estudos mais aprofundados de cada uma destas estruturas e como manipulá-las no Python.

Até lá 🙂