22
loading...
This website collects cookies to deliver better user experience
É uma linguagem fortemente tipada, isto é, cada variável tem um tipo e em alguns casos é preciso convertê-las para realizar operações, por exemplo: ‘1’ + 1
irá retornar uma exceção pois os tipos são diferentes.
É uma linguagem de tipagem dinâmica. Isso significa que podemos alterar o tipo da variável ao longo do programa, como por exemplo:
n = 2 # n é do tipo inteiro
n = ‘teste’ # n é do tipo string
type(var)
.Tipo | Descrição | Exemplo |
---|---|---|
str | Texto | 'hello' |
int | Número Inteiro | 1 , 2, 3 |
float | Número Real | 1.0, 2.0 |
list | Lista | [1,2,3] |
dict | Dicionário | {'title': 'post 1', 'category': 1 } |
def somar(a, b):
return a+b
def somar(a, b):
'''
Retorna a soma de dois números inteiros
Params:
a (int)
b (int)
'''
return a+b
@accepts (int, int)
@returns (int)
def somar(a, b):
return a+b
É importante que o usuário seja capaz de definir os tipos de uma forma que possa ser entendida por verificadores de tipo. O objetivo deste PEP é propor uma forma sistemática de definir tipos para anotações de tipo de variáveis e funções usando a sintaxe PEP 3107 . Essas anotações podem ser usadas para evitar muitos tipos de bugs, para fins de documentação, ou talvez até mesmo para aumentar a velocidade de execução do programa. Aqui, nos concentramos apenas em evitar bugs usando um verificador de tipo estático.
def somar(a: int, b: int) -> int:
return a+b
def somar(a: int, b: int) -> int:
return a+b
print(somar('a', 'b'))
>> 'ab'
Eu estou utilizando o PyCharm, uma IDE feita para Python. Ela tem uma ótima integração com os Type Hints fazendo as validações em tempo de desenvolvimento. Mas sintam-se a vontade para testar em outros editores. Você poderá executar o MyPy sempre que quiser testar suas implementações
def validar_palavras(palavras: list[str]) -> bool:
return True if 'teste' in palavras else False
print(validate_words(['Nome', 'teste'])
list[str]
informamos que estamos esperando uma lista de palavras para nossa função. No método acima o -> bool
informa que o retorno é um boleano (Verdadeiro ou Falso).from typing import TypedDict
from enum import Enum
class UserStatus(Enum):
ATIVO = 1
SUSPENSO = 2
class UserType(TypedDict):
nome: str
status: UserStatus
def boas_vindas(usuario: UserType) -> str:
if usuario['status'] == UserStatus.SUSPENSO:
return 'Usuário Suspenso!'
return f"Bem vindo {usuario['nome']}"
usuario_ativo: UserType = {'nome': 'Usuário Ativo', 'status': 'ativo'}
usuario_suspenso: UserType = {'nome': 'Usuário Suspenso', 'status': UserStatus.SUSPENSO}
print(boas_vindas(usuario_ativo))
print(boas_vindas(usuario_suspenso))
UserStatus
será usada para definir nossos tipos padrões de status aceitos, enquanto a UserType
serão os tipos de dados esperados pelo usuário.