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.