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')
Documentação online: https://docs.python.org/3/
Tutorial bacana com uma visão geral do Python (en-US) https://www.youtube.com/watch?v=t8pPdKYpowI
Style Guide for Python Code (en-US): https://www.python.org/dev/peps/pep-0008/
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
Agora, você pode instalar uma IDE para facilitar o desenvolvimento. Abaixo algumas opções:
O VSCode é bastante funcional e rápido para desenvolver Python ou para utilizar Jupyter Notebooks.
O VSCode é um editor FREE, rápido, leve e com uma infinidade de extensões para diferentes linguagens de programação, o que faz com que ele seja uma ótima opção para diferentes usos, vale destacar também que ele ganhou com folga a primeira posição da pesquisa anual do Stack Overflow de 2021 (link) como a IDE mais utilizada por programadores.
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
Para dicas e mais informações sobre como utilizar o VSCode, consulte: Referêcia VSCode
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/
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
# isso é um comentário
print("Texto")
Obter valor de input
name = input("What's your name?\n")
print(f"Ola, {name}")
customer_name = "Pedro"
customer_age = 27
customar_height = 1.69
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
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 |
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
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
//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']
//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']
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'}
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}
# 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)
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
# 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
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
# 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
# in (Retorna True se a sequencia do valor está presente no objeto)
x in y
x not in y
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
number = 2
if number == 0:
print("Zero")
elif number < 0:
print("Numero negativo")
else:
print("Numero positivo")
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
def print_int_value(value):
try:
print(int(value))
except ValueError:
print("Invalid value")
print_int_value("abacaxi")
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))
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")