pe-python

Sumário

Característicass da Linguagem Python

A linguagem Python tem por característica ser muito próxima à linguagem natural. É considerada como uma linguagem de altíssimo nível pois sua estrutura e instruções são de fácil entendimento, considerando o idioma inglês. Toda o conjunto de instruções, forma simplificada de uso e legibilidade a distinguem de outras linguagens de alto nível.

Alto Nível x Baixo Nível

Também existem as linguagens de baixo nível, às vezes chamadas de “linguagens de máquina” ou “linguagens assembly” (linguagens de montagem). Com muita simplificação podemos dizer que o computador só consegue executar programas escritos em linguagens de baixo nível.

Programas escritos em linguagens de alto nível precisam ser processados antes que possam executar. Esse pré-processamento extra demanda mais tempo, o que é uma pequena desvantagem das linguagens de alto nível. Mas as vantagens são enormes:

Devido a essas vantagens, quase todos os programas são escritos em linguagens de alto nível. As de baixo nível são utilizadas somente para umas poucas aplicações especializadas.

Interpretada

Para executar um programa escrito na linguagem Python é necessário ter um programa, também chamado python. Ele é um interpretador. Irá verificar e executar cada instrução escrita no seu programa.

Você pode utilizar o interpretador executando instrução por instrução, verificando o resultado individualmente, ou executando um script (python arquivo.py).

No modo interativo cada instrução será executada e gera um retorno, se houver, imediato. Este modo é ótimo para conhecer a linguagem ou explorar recursos de módulos.

# Interpretador Python
> C:\Users\romulomenezesjr> python3
Python 3.10.11 (tags/v3.10.11:7d4cc5a, Apr  5 2023, 00:38:17) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> nums = range(1,10)
>>> list(nums)
[1, 2, 3, 4, 5, 6, 7, 8, 9]

Ao executar um script com o interpretador Python você deve passar o nome do arquivo à ele. Cada instrução escrita no arquivo deverá ser interpretada uma-a-uma. Veja no exemplo a seguir que existe um erro de tipo, mas como o interpretador não consegue chegar nesta instrução, o erro não é gerado.

```python {.line-numbers .highlight=3}

arquivo.py

if False: num = 2/”2” else: num = 0 print(num)


```sh
python3 arquivo.py

Outra forma de gerar programas é a partir de linguagens compiladas. Um programa chamado compilador lê o código e o traduz completamente antes da execução. Após a etapa de compilação você pode executar repetidamente o programa sem que precise de nova tradução/interpretação.

A linguagem Python internamente utiliza os processos, mas devido a forma com que você interage com essa linguagem, ela é em geral considerada uma linguagem interpretada. O código fonte é primeiramente compilado para uma linguagem de baixo nível, chamado de código em bytes (“byte code”), e então são interpretados por um programa chamado de máquina virtual.

Tipagem dinâmica

O Python usa tipagem dinâmica, o que significa que você pode atribuir e reatribuir uma variável àa diferentes tipos de dados. Isso torna o Python muito flexível na atribuição de tipos de dados; ela difere de outras linguagens que são tipadas estaticamente.

# Python

# Atribuindo um inteiro à variável num
num = 3
print(num)

# Reatribuindo a lista dee inteiros à variável num
num = "1"
print(num)

Outras linguagens exigem que você especifique o tipo antes de criar uma variável para armazenar valores. A linguagem Java é estaticamente tipada.

// Java

String fruta = "Laranja"
fruta = 1 // Exception

A tipagem dinâmica é mais fácil de trabalhar e possibilita que o tempo de desenvolvimento para pequenos programas seja mais rápido. Porém, pode resultar em bugs inesperados e em alguns momentos você precisa usar a função type().

Fortemente tipada

Python é uma linguagem fortemente tipada, o que significa que o interpretador não faz conversões automáticas ou coersões. O programa feito em Python necessita de um tipo exato para realizar as operações. O interpretador faz uma verificação no conteúdo das variáveis no momento da execução de uma instrução. Esta verificação é consequência da tipagem dinâmica, pois nenhuma verificação foi feita anteriormente e nenhuma conversão é automática. Isso afeta o desempenho da execução em aplicações de extremo processamento.

A linguagem Javascript tenta realizar conversões para executar uma operação. Isso é uma característica de linguagem fracamenta tipada.

// Javascript

2 / "2";
1;

Este mesmo código em Python resultará em um erro de tipo, pois a operação só pode ser realizada entre números.

# Python

2 / "2";
TypeError

A partir da versão 3.6 a linguagem possibilita anotações de tipos para melhor identificar o funcionamento do código. Além dos tipos básicos ainda há um módulo que pode ser importado para isso: typing

# Python

from typing import List
num: int = 3
numeros: List = [1,2,3]
def soma(a:int, b:int)-> int:
    return a+b

Adicinar anotações de tipo não é uma obrigação na linguagem Python, mas pode documentar e ajudar quando trabalhamos com código longo, evitando erros e mantendo os tipos sem variações.

Plano Carteziano.

Duck Typing

Outro termo usado para descrever a tipagem em Python é o Duck Typing. Pelo conceito: “Se algo parece com um pato, faz barulho de pato ou anda como um pato, então deve ser um pato”.

Este conceito não observa o tipo de um objeto, apenas se ele é capaz de realizar uma operação. Em um programa, se algo possui um método então pode ser usado para determinado fim, sem que haja verificação de tipo. Este conceito é utilizado nos métodos mágicos e nos métodos dunder.

Exempo: A função len() do Python calcula o comprimento de algo (Strings, Listas, etc.). Ela não existe um tipo, mas solicita que o que esteja sendo passado à ela saida dizer seu tamanho.

# Python

nome = "Maria"
numeros = [1,2,3]
len(nome)       # 5
len(numeros)    # 3

PEP 20 - Modo de Programar Python

A linguagem Python é construída a partir de proposta para melhoramento do Python discutidas entre a comunidade de programadores. Estas propostas são chamadas de PEP’s (Python Enhancement Proposal). Duas PEP’s muito importantantes para compreender a estrutura da linguagem são a PEP20 (estilo) e a PEP8 (formatação). A PEP20 é chamada de modo Python de Programar e possui o seguinte conteúdo:

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea – let’s do more of those!

Versões da linguagem

Com a evolução da linguagem são adicionadas novas funcionalidades, melhorias de desempenho e ferramentas para auxiliar no desenvolvimento. A seguir estão algumas versões e datas de lançamento. Veja o destaque para a documentação da versão 2.7, que foi muito utilizada e para a versão atual (3.12).

Cada versão possui um ciclo de atualizações que é mantida por um período de tempo. Essas atualizações podem ser para resolver bugs ou problemas de segurança. Atualizações menores, como da versão 3.11.1 para a 3.11.2 resolvem pequenos problemas. Novas funcionalidades são inseridas em versões maiores, como por exemplo: A mudança da versão 3.10 para 3.11 ocorre adição de funcionalidades propostas e aprovadas em PEP’s.

Versões Python

Quando temos diferentes projetos que usam a linguagem Python é comum criarmos ambientes virtuais para a execução separada, assim as bibliotecas e versões de outros projetos não entram em conflito.

Ambientes Virtuais Python

Para a versão 3.6+ estes ambientes virutais são criados com o comando.

python -m venv .venv
source .env/bin/activate

Para a versão 2.7 estes ambientes virutais são criados com o comando.

virtualenv -p /usr/bin/python2 env
source env/bin/activate

Utilização e Ferramentas

Para construir programas mais complexos e que possuem muitas funcionalidades é comum utilizar ferramentas e bibliotecas que auxiliam no desenvolvimento pois já possuem várias funções prontas. Na linguagem Python existem diversos projetos de ferramentas e bibliotecas que você deve conhecer para programas maiores:

Web Development

Desenvolver aplicações web com Python é uma das habilidades mais procuradas, com muitas oportunidades disponíveis para você. Nesse campo, você encontrará vários frameworks, bibliotecas e ferramentas úteis em Python para desenvolver aplicações web, APIs e muito mais. Aqui estão alguns dos frameworks web Python mais populares:

CLI Development

Outro campo em que o Python se destaca é o desenvolvimento de aplicativos de interface de linha de comando (CLI). Aplicativos CLI estão em todos os lugares e permitem automatizar tarefas repetitivas e tediosas no seu trabalho diário, criando ferramentas pequenas e grandes para a linha de comando.

Em Python, você tem um conjunto impressionante de bibliotecas e frameworks para CLI que podem tornar sua vida mais agradável e ajudá-lo a construir ferramentas de linha de comando rapidamente:

GUI Development

Aplicativos de interface gráfica do usuário (GUI) tradicionais para ambientes de desktop também são uma opção atraente em Python. Se você está interessado em construir esse tipo de aplicativo, o Python tem várias opções de bibliotecas, frameworks e conjuntos de ferramentas para escolher:

Game Development

Criar jogos de computador é uma ótima maneira de aprender a programar não apenas em Python, mas também em qualquer outra linguagem. Para desenvolver jogos, você precisará usar variáveis, loops, declarações condicionais, funções, programação orientada a objetos e muito mais. O desenvolvimento de jogos é uma excelente opção para integrar várias habilidades.

Você encontrará várias ferramentas, bibliotecas e frameworks no ecossistema do Python para criar jogos rapidamente. Aqui está uma pequena amostra deles:

Machine Learning

A aprendizagem de máquina pode ser o primeiro passo para alguém interessado em inteligência artificial. A aprendizagem de máquina estuda algoritmos que aprendem por meio da experiência. Esses algoritmos constroem modelos com base em amostras de dados de treinamento para fazer previsões e tomar decisões.

Computação Científica/Ciência de Dados

Data Analysis and Visualization

Webscrapping

Devops

Software Testing

Banco de Dados

Software Packaging and Deployment

Exercício

Faça uma pesquisa sobre as empresas que utilizam Python e as vagas de emprego existentes. Pesquisa os requisitos e faixa salarial.

Referencias

Versões do Python

Python Type Checking (Guide)