Como funcionam as funções type() e isinstance()?
Na lição anterior, você aprendeu sobre tipos de dados comuns em Python, incluindo os tipos string, inteiro e float. Conforme você desenvolve seus programas, precisará aprender como visualizar o tipo de uma variável.
Aqui está uma variável de exemplo:
developer = 'Devin'
Para ver qual é o tipo de developer, você pode usar a função type() assim:
developer = 'Devin'
print(type(developer)) # <class 'str'>
A saída de <class 'str'> significa que developer é do tipo string.
Se você não fornecer nenhum argumento para a função type(), receberá a seguinte mensagem de erro:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: type() takes 1 or 3 arguments
Aqui estão todos os tipos de dados que você aprendeu até agora junto com seus tipos no terminal:
my_integer_var = 10
print(type(my_integer_var)) # <class 'int'>
my_float_var = 4.50
print(type(my_float_var)) # <class 'float'>
my_string_var = 'hello'
print(type(my_string_var)) # <class 'str'>
my_boolean_var = True
print(type(my_boolean_var)) # <class 'bool'>
my_set_var = {7, 'hello', 8.5}
print(type(my_set_var)) # <class 'set'>
my_dictionary_var = {'name': 'Alice', 'age': 25}
print(type(my_dictionary_var)) # <class 'dict'>
my_tuple_var = (7, 'hello', 8.5)
print(type(my_tuple_var)) # <class 'tuple'>
my_range_var = range(5)
print(type(my_range_var)) # <class 'range'>
my_list = [22, 'Hello world', 3.14, True]
print(type(my_list)) # <class 'list'>
my_none_var = None
print(type(my_none_var)) # <class 'NoneType'>
Haverá momentos no seu programa em que você precisará verificar se uma variável específica é de um tipo determinado antes de realizar operações nela. É aí que a função isinstance() é útil.
Aqui está uma variável de exemplo com uma string atribuída a ela:
account_balance = '12'
Se você tentar fazer expressões matemáticas como divisão usando a variável account_balance, receberá uma mensagem de erro.
account_balance = '12'
account_balance / 2
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# TypeError: unsupported operand type(s) for /: 'str' and 'int'
Para verificar se account_balance é um inteiro, você pode usar a função isinstance() assim:
account_balance = '12'
isinstance(account_balance, int) # False
A função embutida isinstance() permite verificar se uma variável corresponde a um tipo de dado específico. Ela recebe um objeto e o tipo contra o qual você quer verificar, e retorna um booleano. Neste caso, como account_balance é uma string, ela retornará False.
A função isinstance() também permite verificar múltiplos tipos ao mesmo tempo.
Aqui está um exemplo verificando se account_balance é um int ou float:
account_balance = 12
isinstance(account_balance, (int, float)) # True
Neste exemplo, account_balance é um inteiro, então isinstance() retorna True. Se account_balance fosse 12.0, isinstance() ainda retornaria True porque você está verificando para inteiros ou floats.
Em futuras oficinas e laboratórios, você usará as funções type() e isinstance() para garantir que suas variáveis contenham os tipos de dados corretos antes de realizar operações nelas.Este módulo não possui perguntas. Marque como concluído.