Referência rápida de Python


1- Sobre o Python

O Python é uma linguagem de programão com as seguintes características:

Mais sobre esses conceitos aqui: Tipos de linguagem de programação

Por suportar tipagem dinâmica, é possível atribuir à uma variável um tipo diferente, do que inicialmente associado à ela, por exemplo:

my_value = 20
print(my_value)
my_value = "Banana"
print(my_value)

Python utiliza a indentação para indicar os elementos que estão dentro de um bloco, por exemplo dentro de uma função ou de um condicional IF:

def print_hi(name):
    print(f'Ola, {name}')


print_hi('Eduardo')

2- Referências sobre a linguagem

Documentação online: https://docs.python.org/3/

Tutorial bacana com uma visão geral do Python (em inglês) https://www.youtube.com/watch?v=t8pPdKYpowI

Style Guide for Python Code (em inglês): https://www.python.org/dev/peps/pep-0008/


3- Instalação

Fazer o download do Python 3 em: https://www.python.org/downloads/

Na instalação, marcar:

O Python deve ser instalado na pasta: c:\Program Files\Python39

Para verificar a versão instalada, utilize:

python --version

Para instalar uma lib utilize “pip install”, por exemplo, para instalar o pandas utilize:

pip install pandas

4- IDEs

Agora, você pode instalar uma IDE para facilitar o desenvolvimento. Abaixo algumas opções:

VSCode (recomendo esse)

O VSCode é bastante funcional e rápido para desenvolver Python ou para utilizar Jupyter Notebooks.

Basta instalar o VSCode: https://code.visualstudio.com/download

Depois da instalação do VSCode, vá em extensões e instale a extensão Python

Depois de adicionar a extensão, pressione: CTRL + SHIFT + P e digite:

python: select interpreter

então, selecione a versão do python que você instalou, por exemplo: Python 3.9.5

Pycharm

Uma das IDEs mais utilizadas para Python é o Pycharm da Jet Brains.

Para instalar, faça o download em: https://www.jetbrains.com/pt-br/pycharm/

Referência de uso: https://www.jetbrains.com/help/pycharm/


5- Hello World

Para fazer um programa básico, que somente imprime “Hello world” na tela, siga os seguintes passos:

Crie uma pasta “helloworld” e então abra essa pasta no VSCode

Adicione um arquivo “main.py” e no arquivo adicione:

print('Hello World')

Para executar, utilize: CTRL+F5


6- Básico

Comentários de código

# isso é um comentário

Interação com o usuário

Print

print("Texto")

Obter valor de input

name = input("What's your name?\n")
print(f"Ola, {name}")

Variáveis

customer_name = "Pedro"
customer_age = 27
customar_height = 1.69

Tipos

Exemplos:

x = "Hello World"							# str
x = 20										# int
x = 20.5										# float
x = 1j										# complex
x = ["abacaxi", "banana", "uva"]		# list
x = ("abacaxi", "banana", "uva")		# tuple
x = range(6)								# range
x = {"name" : "John", "age" : 36}	# dict
x = {"abacaxi", "banana", "uva"}		# set
x = frozenset({"abacaxi", "banana", "uva"})	# frozenset
x = True										# bool
x = b"Hello"								# bytes
x = bytearray(5)							# bytearray
x = memoryview(bytes(5))				# memoryview

Forçando um tipo específico:

x = str("Hello World")
x = int(20)
x = float(20.5)
x = complex(1j)
x = list(("abacaxi", "banana", "uva"))
x = tuple(("abacaxi", "banana", "uva"))
x = range(6)
x = dict(name="John", age=36)
x = set(("abacaxi", "banana", "uva"))
x = frozenset(("abacaxi", "banana", "uva"))
x = bool(5)
x = bytes(5)
x = bytearray(5)
x = memoryview(bytes(5))

Verificar o tipo de um valor Para verificar o tipo de um valor, utilize a função type()

print(type(2))				# int
print(type(1.7))			# float
print(type("texto"))		# str

Para verificar se um valor é númerico e inteiro, utilize isDigit()

print("10".isdigit())		# True
print("banana".isdigit())	# False
print("10.2".isdigit())		# False

Palavras reservadas

As palavras reservadas não podem ser utilizadas como nome de variáveis ou funções

False def if raise
None del import return
True elif in try
and else is while
as except lambda with
assert finally nonlocal yield
break for not
class from or
continue global pass

Funções

Para criar uma função, utilize “def”

Exemplos de funções:

1- Sem retorno e sem entrada de valor:

def print_hi():
	 print('Ola!')


print_hi()

2- Sem retorno e com entrada de valor:

def print_hi(name):
    print(f'Ola, {name}')


print_hi('Eduardo')

3- Com retorno de valor:

def sum_numbers(x, y):
	return x + y

result = sum_numbers(6, 4)
print(result)

Na verdade toda função retorna um valor, então se um retorno não for especificado, será retornado None

Python Built-in Functions

Função Descrição Exemplo Retorno
abs()
all()
any()
ascii()
bin() Representação em binário bin(10) 0b1010 (10 em binário é 1010)
bool()
breakpoint()
bytearray()
bytes()
callable()
chr()
classmethod()
compile()
complex()
delattr()
dict()
dir()
divmod()
enumerate()
eval()
exec()
filter()
float()
format()
frozenset()
getattr()
globals()
hasattr()
hash()
help()
hex()
id()
input()
int() Converte um valor em inteiro int("20") 20
isinstance()
issubclass()
iter()
len() Retorna o tamanho de uma string len("abc") 3
list()
locals()
map()
max()
memoryview()
min()
next()
object()
oct()
open()
ord()
pow()
print()
property()
range()
repr()
reversed()
round()
set()
setattr()
slice()
sorted()
staticmethod()
str()
sum()
super()
tuple()
type()
vars()
zip()
__import__()

Referência da linguagem (inglês): https://docs.python.org/3/library/functions.html

Strings

//TODO: Complementar….

Concatenação

my_value = 20
print("Eduardo" + " " + "Coutinho"))

Formatadores

print("A quantidade é: " + str(my_value))	 # valores numéricos precisam ser convertidos utilizando srt()
print(f"O valor é {my_value}")

Funções de string

# converte uma string em uma lista

print("a b c".split())
> ['a', 'b', 'c']

print("a,b,c".split(","))
> ['a', 'b', 'c']

Coleções

List

//TODO: Complementar….

Funções de list

# Obter o item pelo índice
values = ['abacaxi', 'banana', 'uva']
print(values[0])
> abacaxi
print(values[1])
> banana

# append() adiciona um item na lista
values = ['abacaxi', 'banana', 'uva']
values.append('manga')
print(values)
> ['abacaxi', 'banana', 'uva', 'manga']

Set

Lista em que os elementos são únicos. NOTA: Os itens não são ordenados.

my_set = {"Abacaxi", "Banana", "Uva"}
print(my_set)
> {'Uva', 'Abacaxi', 'Banana'}

# set() converte uma lista em um set
values = [5, 1, 2, 2, 3, 2, 1, 4]
unique_values = set(values)
print(unique_values)
> {1, 2, 3, 4, 5}

Funções de set

# add() adiciona um item
my_set = {"Abacaxi", "Banana", "Uva"}
my_set.add("Manga")
print(my_set)
> {'Uva', 'Manga', 'Abacaxi', 'Banana'}

# remove() remove um item
my_set = {"Abacaxi", "Banana", "Uva"}
my_set.remove("Abacaxi")
print(my_set)
> {'Uva', 'Banana'}

Dicionário (dic)

Armazenam dados no padrão chave e valor NOTA: No Python 3.7 ou superior, os dicionários são ordenados, em versões anteriores não são ordenados

customer = {"name": "Eduardo", "age": 36}
print(customer)
> {'name': 'Eduardo', 'age': 36}

# Para obter um valor pela chave
print(customer["name"])
> Eduardo

# Valores duplicados sobrescrevem valores antigos
customer = {"name": "Eduardo", "age": 36, "name": "Coutinho"}
print(customer)
> {'name': 'Coutinho', 'age': 36}

Operadores

Operadores aritméticos

# adição
print(2 + 3)    # result: 5

# subtração
print(3 - 2)    # result: 1

# multiplicação
print(3 * 2)    # result: 6

# divisão
print(15 / 2)   # result: 7.5

# divisão com arredondamento (Floor division)
print(15 // 2)   # result: 7

# potenciação
print(2 ** 3)   # result: 8  (2 ao cubo = 2 x 2 x 2 = 8)

# módulo da divisão
print(4 % 2)	# result: 0	  (4/2 = 2 com resto 0)

Operadores de atribuição

x = 5
x += 3	# o mesmo que x = x + 3
x -= 3	# o mesmo que x = x - 3
x *= 3	# o mesmo que x = x * 3
x /= 3	# o mesmo que x = x / 3
x %= 3	# o mesmo que x = x % 3
x //= 3	# o mesmo que x = x // 3
x **= 3	# o mesmo que x = x ** 3
x &= 3 	# o mesmo que x = x & 3
X |= 3	# o mesmo que x = x | 3
x ^= 3	# o mesmo que x = x ^ 3
x>>=3		# o mesmo que x = x >> 3
x<<=3		# o mesmo que x = x << 3

Operadores de comparação

# Igual
1 == 1		# True
1 == 2		# False

# Diferente
1 != 1		# False
1 != 2		# True

# Maior, menor, maior que, menor que
1 > 2			# False
1 < 2			# True
1 >= 1		# True
1 <= 1		# True

Operadores lógicos

Operador AND (retorna True se ambos são True)

4 < 5 and 5 < 6	# True
True and True		# True
True and False		# False
False and True		# False
False and False	# False

Operador OR (retorna True se uma das condições for True)

4 < 5 or 5 < 6		# True
True or True		# True
True or False		# True
False or True		# True
False or False		# False

Operador NOT (negação da condição, retorna False se a condição for True)

not(1 > 2)				# True
not(True)				# False
not(False)				# True

Comparação de objetos

# is (Utilizado para comparar objetos, retorna True não se os valores são iguais, as sim se ambos objetos são o mesmo, com a mesma alocação de memória)
x is y
x is not y

Operador contido

# in (Retorna True se a sequencia do valor está presente no objeto)
x in y
x not in y

Operadores de Bitwise

Operações com os bits do valor

1 em binário 	= 0001
2 em binário 	= 0010
3 em binário 	= 0011
4 em binário 	= 0100
5 em binário 	= 0110
10 em binário 	= 1010

# Operador AND (Retorna bit 1, se ambos forem 1)
print(bin(1 & 2))		# 0001 & 0010 = 0000
print(bin(2 & 3))		# 0010 & 0011 = 0010

# Operador OR (Retorna bit 1, se um dos dois tiver o valor 1)
print(bin(1 | 2))		# 0001 & 0010 = 0011
print(bin(2 | 3))		# 0010 & 0011 = 0011

# Operador XOR (Retornar bit 1, se somente um dos dois tiver o valor 1)
print(bin(1 ^ 2))		# 0001 & 0010 = 0011
print(bin(2 ^ 3))		# 0010 & 0011 = 0001

# Operador NOT (Inverte todos os bits)
print(bin(~2))			# 0000 0010 = 1111 1101
print(bin(~3))			# 0000 0011 = 1111 1100

# left shift (move os bits para a esquerda, adicionando zeros na direita e descartando os bits perdidos na esquerda)
print(bin(10 << 2))	# 0000 1010 = 0010 1000

# right shift (move os bits para a direita, adicionando zeros na esquerda e descartando os bits perdidos na direita)
print(bin(10 >> 2)) # 0000 1010 = 0000 0010

Estruturas condicionais

IF

number = 2
if number == 0:
    print("Zero")
elif number < 0:
    print("Numero negativo")
else:
    print("Numero positivo")

Laços e iterações

WHILE

count = 1
while count <= 3:
    print(count)
    count = count + 1


count = 1
while True:
    print(count)
    if count < 3:
        count = count + 1
        continue
    break

FOR

for value in ['abacaxi', 'banana', 'uva']:
	print(value)
> abacaxi
> banana
> uva

for value in range(1, 4):
 	print(value)
> 1
> 2
> 3

Declaração e tratamento de exceções

def print_int_value(value):
    try:
        print(int(value))
    except ValueError:
        print("Invalid value")


print_int_value("abacaxi")

Utilizando Módulos

Criando um módulo

Os módulos permitem definir funções em outros arquivos, quem podem ser acessadas

Por exemplo, se criarmos um arquivo helper.py com o seguinte conteúdo:

def get_value1():
 return 1


def get_value2():
 return 2


my_value = 123

É possível acessar as funções desse módulo, no arquivo main.py das seguintes formas:

import helper

print(helper.get_value1())
print(helper.get_value2())
print(helper.my_value)

Ou assim:

import helper as hp

print(hp.get_value1())
print(hp.get_value2())
print(hp.my_value)

Ou assim:

from helper import get_value1, get_value2, my_value

print(get_value1())
print(get_value2())
print(my_value)

Ou assim:

from helper import *

print(get_value1())
print(get_value2())
print(my_value)

Importando módulos existentes

Exemplo de utilização de um módulo disponível no python

import math

print(math.pow(2, 4))

Python Builtin Modules

Lista de módulos do Python: https://docs.python.org/3/py-modindex.html

Módulo - math

import math
print(math.pow(2, 4))

Módulo - datetime

import datetime

# data atual
print(datetime.date.today())

# converter uma string para data -- format codes: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes
date_str = '01/01/2021'
date = datetime.strptime(date_str, '%d/%m/%Y')

Módulo - sys

import sys
print(sys.platform)

Módulo - logging

Utilizado para logar mensagens ou erros

import logging
logger = logging.getLogger("MAIN")
logger.error("Error message")


Comentários