22
Noções básicas de Python
Nomes de váriaveis e métodos são separados por underscore(_
), em vez de usar o CamelCase. Ex: my_name
, get_my_name
.
Estrutura:
def sum(n1, n2):
return n1 + n2
Para um parâmetro de um método ser opcional, basta adicionar um valor padrão. Ex.:
def sum(n1, n2 = 0):
return n1 + n2
Estrutura:
def sum(n1: int, n2: int) -> int:
return n1 + n2
Uma docstring
é uma string no início de uma função que explica o método. Por convenção, todas as docstrings
têm aspas triplas (""").
Estrutura:
def sum(n1, n2):
"""Soma dois números, e retorna o resultado."""
return n1 + n2
Estrutura:
class Animal:
cont = 0 # class variable shared by all instances
def __init__(self, name, color):
self.name = name # instance variable unique to each instance
self.color = color # instance variable unique to each instance
def greeting(self):
print('Oi! Eu sou o ${name}.')
Explicações:
- O método
__init__
é o contrutor da classe; - Qualquer método da classe que precise utilizar algum atributo da classe deve receber
self
na assinatura do método; - Qualquer variável que apareça fora do método
__init__
é compartilhada entre todas as instâncias dessa classe, como é o caso da váriavelcont
. Por exemplo:
a = Animal()
b = Animal()
a.cont = 3
b.cont = 5
print(a.cont) # 5
print(b.cont) # 5
Segundo a documentação do python: Variáveis de instância e metodos “privadas”, que não podem ser acessadas, exceto em métodos do próprio objeto, não existem em Python. No entanto, existe uma convenção que é seguida pela maioria dos programas em Python: um nome prefixado com um underscore (por exemplo: _spam
e _set_age(self, new_age)
). Dessa forma, em vez de chama-los de "privados", nomea-se "não-públicos".
Em muitos casos é necessário adicionar regras de negócio, a alguns dados, isto é, alterar ou obter algum atributo da classe, somente se atender a certas regras da classe.
Com esse objetivo, basta seguir os seguintes passos:
- Defina o atributo como privado (adicione o underline na frente do atributo);
- Crie suas funções de getter e setter, com o nome do atributo. Ex.: Para o atributo
_name
, tanto o método getter como o setter, terão o nomename
. - Adicione
@property
em cima dos métodos getters, e@nome_do_atributo.setter
em cima dos métodos setters .
Estrutura:
from enum import Enum
class Color(Enum):
WHITE = 0
GRAY = 1
BLACK = 2
Obs.: Suporta herança múltipla.
Estrutura:
class Animal:
cont = 0
def __init__(self, name, color):
self.name = name
self.color = color
class Duck:
cont = 0
def __init__(self, name, color, other):
super().__init__(name, color)
self.other = other
Estrutura:
import animal
from src.routes.index import Routes # importa Routes da pasta src/routes/index. Obs.:
a = animal.Animal
routes = Routes()
Obs.: Quando fazemos from src.routes.index import Routes
, estamos importando Routes
da pasta src/routes/index
. Esse é um caminho para encontrar esse arquivo, mas não significa que está em uma subpasta. Pelo contrário, é possível que essa pasta src
pode ser uma pasta anterior, ou do diretório atual.
my_integers = [1, 2, 3, 4, 5]
Obs.: Pode-se criar um array não vazio e iniciado com alguns valores padrão. Exemplo:
array_of_ones = [1] * 4 # [1,1,1,1]
array_of_0_4 = [i for i in range(5)] # [0,1,2,3,4]
Como o próprio nome diz, refere-se a uma lista de elementos (arrodeado por chaves) sem repetição. Para criar um conjunto, passando um conjunto:
my_integers = {1, 2, 3, 4, 5}
, ou através da função set()
. Essa função retorna um conjunto, e pode receber um argumento iterável (ex.: listas), transformando-o em um conjunto. Já se não passarmos nenhum elemento, ele retorna um conjunto vazio.
my_integers = set([1, 2, 3, 4, 5])
dictionary_example = {
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
dictionary_example["key1"]
Obs.: A expressão {}
é considerada um dicionário vazio, e não um conjunto
x = b if (b > a) else a
x = False or 32
print(x) # 32
x = {} or 32
print(x) # 32
x = [] or 32
print(x) # 32
Referências:
22