1.1 Lista de funções embutidas populares
A gente já se familiarizou com um monte de funções embutidas, mas gostaria de falar sobre mais algumas que vão ser úteis pra você em breve:
id()
hash()
dir()
Abaixo, um pouco mais sobre elas:
Função id()
A função id()
retorna o
identificador único do objeto (número). Este identificador
é um número inteiro e continua único para o objeto enquanto ele
existir. Normalmente, o identificador corresponde ao endereço do objeto
na memória, embora a especificação do Python não garanta isso.
Você pode usar o identificador único do objeto para compreender melhor muitas operações, por exemplo, para entender melhor onde os objetos são duplicados e onde temos referências para o mesmo objeto. Objetos iguais terão identificadores diferentes, mas referências para o mesmo objeto mostrarão o mesmo identificador.
Pode ser usado durante a depuração do programa para entender como o Python gerencia objetos na memória.
a = [1, 2, 3]
b = a
print(id(a)) # Mostra o identificador do objeto 'a'
print(id(b)) # Mostra o mesmo identificador, porque 'b' referencia o mesmo objeto
Função hash()
A função hash()
retorna o valor de hash (número) para
um objeto especificado, se ele for hashable. Objetos hashable no Python
devem ser imutáveis e ter um valor de hash constante durante seu
tempo de vida.
Exemplos desses objetos incluem números, strings e tuplas (se todos seus elementos também forem hashable). Valores de hash são usados em dicionários e conjuntos para busca rápida. É usada para otimizar a busca e armazenamento de dados, onde são necessárias verificações rápidas de igualdade e unicidade.
print(hash("hello")) # Retorna o valor de hash da string "hello"
print(hash(42)) # Retorna o valor de hash do número 42
print(hash((1, 2, 3))) # Retorna o valor de hash da tupla (1, 2, 3)
Importante!
Os valores de hash de objetos imutáveis
permanecem constantes durante seu tempo de vida. No entanto, objetos
mutáveis, como listas e dicionários, não são hashable e não podem ser
usados como chaves em dicionários ou elementos de conjuntos.
Função dir()
A função dir()
retorna uma lista de atributos e métodos
de um objeto. Se o objeto não for especificado, dir()
retorna
a lista de nomes no escopo local atual.
Esta função é útil para explorar a estrutura de objetos e seus atributos.
Usada para obter uma lista de todos os atributos e métodos de um objeto, o que ajuda a entender melhor sua estrutura e funções disponíveis. Frequentemente usada para depuração e exploração de objetos, especialmente quando a documentação é limitada ou indisponível.
class MyClass:
def __init__(self):
self.name = "Alice"
def greet(self):
print("Hello, " + self.name)
obj = MyClass()
print(dir(obj)) # Mostra a lista de atributos e métodos do objeto 'obj'
print(dir()) # Mostra a lista de nomes no escopo local atual
1.2 Trabalhando com coleções
Existem ainda algumas funções úteis para trabalhar com coleções. Talvez tenham sido mencionadas em aulas anteriores, mas agora quero explorar um pouco mais.
zip()
min()
max()
sum()
count()
Função zip()
A função zip()
combina vários objetos iteráveis
(como listas, tuplas, strings) e retorna um iterador de tuplas.
Cada tupla contém elementos coletados de posições com o mesmo
índice de todos os objetos iteráveis.
É frequentemente usada para combinar dados de vários objetos iteráveis, permitindo iterar por eles simultaneamente. Também pode ser usada para criar dicionários a partir de duas listas — uma para chaves, outra para valores.
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
combined = zip(names, ages)
print(list(combined)) # Saída: [('Alice', 25), ('Bob', 30), ('Charlie', 35)]
Função max()
A função max()
retorna o maior elemento de um objeto
iterável passado ou de vários argumentos passados. Também é possível
especificar uma função chave para determinar a regra de comparação.
numbers = [1, 2, 3, 4, 5]
print(max(numbers)) # Saída: 5
# Com função chave
words = ["apple", "banana", "cherry"]
print(max(words, key=len)) # Saída: 'banana'
Função min()
A função min()
retorna o menor elemento de um objeto
iterável passado ou de vários argumentos passados. Também é possível
especificar uma função chave para determinar a regra de comparação.
numbers = [1, 2, 3, 4, 5]
print(min(numbers)) # Saída: 1
# Com função chave
words = ["apple", "banana", "cherry"]
print(min(words, key=len)) # Saída: 'apple'
Função count()
A função count()
é usada para contar o número de
ocorrências de um elemento em um objeto iterável, como uma lista ou string.
É chamada em uma lista, coleção ou iterador.
numbers = [1, 2, 2, 3, 4, 2, 5]
print(numbers.count(2)) # Saída: 3
text = "hello world"
print(text.count("o")) # Saída: 2
Função sum()
A função sum()
retorna a soma de todos os elementos de um
objeto iterável. Opcionalmente, pode-se especificar um valor inicial que será
adicionado à soma.
numbers = [1, 2, 3, 4, 5]
print(sum(numbers)) # Saída: 15
# Com valor inicial
print(sum(numbers, 10)) # Saída: 25
1.3 Execução de código
E mais duas funções que podem ser úteis para você como iniciante:
eval()
exec()
Elas têm capacidades poderosas, mas exigem cautela devido aos potenciais riscos de segurança. Aqui está uma visão detalhada de cada uma dessas funções:
Função eval()
A função eval(expression)
aceita uma string e executa-a como uma
expressão Python. Ela retorna o resultado da execução desta expressão.
Usada para avaliar expressões em strings como código Python.
Exemplos:
x = 10
result = eval("x + 5")
print(result) # Saída: 15
Função exec()
A função exec()
aceita uma string e executa-a como código Python.
Ao contrário de eval()
, que executa apenas expressões,
exec()
pode executar qualquer instrução Python, incluindo
definições de funções, loops e importação de módulos. Esta função não retorna
nenhum valor.
Usada para executar scripts dinâmicos e definir novas funções ou classes durante a execução do programa.
code = """
def greet(name):
print(f"Hello, {name}!")
greet("Alice")
"""
exec(code)
# Saída: Hello, Alice!
Importante!
Assim como eval()
, exec()
pode ser perigoso
quando usado com dados de entrada não confiáveis. Tenha cuidado
e evite usar exec()
para executar código em produção.
GO TO FULL VERSION