1.1 Lista de funciones integradas populares
Ya hemos conocido un buen número de funciones integradas, pero me gustaría hablar de algunas más que te serán útiles pronto:
id()
hash()
dir()
A continuación un poco más de detalle sobre ellas:
Función id()
La función id()
devuelve un identificador único del objeto (número). Este
identificador es un número entero y se mantiene único para el objeto durante
su existencia. Normalmente el identificador corresponde a la dirección del objeto
en la memoria, aunque esto no está garantizado por la especificación de Python.
El identificador único del objeto se puede usar para entender mejor muchas operaciones, por ejemplo, para entender dónde los objetos se duplican y dónde tenemos referencias al mismo objeto. Los objetos idénticos tendrán diferentes identificadores, pero las referencias al mismo objeto mostrarán el mismo identificador.
Puede ser aplicado durante la depuración del programa y para entender cómo Python maneja los objetos en la memoria.
a = [1, 2, 3]
b = a
print(id(a)) # Muestra el identificador del objeto 'a'
print(id(b)) # Muestra el mismo identificador, ya que 'b' se refiere al mismo objeto
Función hash()
La función hash()
devuelve un valor hash (número) para
el objeto especificado, si es "hasheable". Los objetos "hasheables" en Python
deben ser inmutables y tener un valor hash constante durante su ciclo de vida.
Ejemplos de tales objetos incluyen números, cadenas y tuplas (si todos sus elementos también son "hasheables"). Los valores hash se utilizan en diccionarios y conjuntos para buscar rápidamente. Se utiliza para optimizar la búsqueda y almacenamiento de datos, donde se requieren verificaciones rápidas de igualdad y unicidad.
print(hash("hello")) # Devuelve el valor hash de la cadena "hello"
print(hash(42)) # Devuelve el valor hash del número 42
print(hash((1, 2, 3))) # Devuelve el valor hash de la tupla (1, 2, 3)
¡Importante!
Los valores hash de los
objetos inmutables permanecen constantes durante su ciclo de vida. Sin embargo,
los objetos mutables, como listas y diccionarios, no son "hasheables" y no pueden
utilizarse como claves en diccionarios o elementos de conjuntos.
Función dir()
La función dir()
devuelve una lista de atributos y métodos
de un objeto. Si no se especifica un objeto, dir()
devuelve
una lista de nombres en el ámbito local actual.
Esta función es útil para examinar la estructura de un objeto y sus atributos.
Se utiliza para obtener una lista de todos los atributos y métodos de un objeto, lo que ayuda a comprender mejor su estructura y funciones disponibles. A menudo se utiliza para la depuración y exploración de objetos, especialmente cuando la documentación es limitada o inaccesible.
class MyClass:
def __init__(self):
self.name = "Alice"
def greet(self):
print("Hello, " + self.name)
obj = MyClass()
print(dir(obj)) # Muestra la lista de atributos y métodos del objeto 'obj'
print(dir()) # Muestra la lista de nombres en el ámbito local actual
1.2 Trabajo con colecciones
Hay algunas otras funciones útiles para trabajar con colecciones. Posiblemente se mencionaron en lecciones anteriores, pero ahora quiero abordarlas un poco más en detalle.
zip()
min()
max()
sum()
count()
Función zip()
La función zip()
combina múltiples objetos iterables
(por ejemplo, listas, tuplas, cadenas) y devuelve un iterador de tuplas.
Cada tupla contiene elementos reunidos de posiciones con el mismo
índice de todos los objetos iterables.
Se usa con frecuencia para combinar datos de múltiples objetos iterables, permitiendo iterar fácilmente a través de ellos al mismo tiempo. Y también para crear diccionarios a partir de dos listas: una para las claves y otra para los valores.
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
combined = zip(names, ages)
print(list(combined)) # Salida: [('Alice', 25), ('Bob', 30), ('Charlie', 35)]
Función max()
La función max()
devuelve el elemento más grande del objeto
iterable pasado o de varios argumentos pasados. También se puede especificar
una función de clave para definir una regla de comparación.
numbers = [1, 2, 3, 4, 5]
print(max(numbers)) # Salida: 5
# Con función de clave
words = ["apple", "banana", "cherry"]
print(max(words, key=len)) # Salida: 'banana'
Función min()
La función min()
devuelve el elemento más pequeño del objeto
iterable pasado o de varios argumentos pasados. También se puede especificar
una función de clave para definir una regla de comparación.
numbers = [1, 2, 3, 4, 5]
print(min(numbers)) # Salida: 1
# Con función de clave
words = ["apple", "banana", "cherry"]
print(min(words, key=len)) # Salida: 'apple'
Función count()
La función count()
se utiliza para contar el número de veces
que un elemento aparece en un objeto iterable, como una lista o cadena. Se llama
en una lista, colección o iterador.
numbers = [1, 2, 2, 3, 4, 2, 5]
print(numbers.count(2)) # Salida: 3
text = "hello world"
print(text.count("o")) # Salida: 2
Función sum()
La función sum()
devuelve la suma de todos los elementos de un
objeto iterable. Opcionalmente se puede especificar un valor inicial que se
añadirá a la suma.
numbers = [1, 2, 3, 4, 5]
print(sum(numbers)) # Salida: 15
# Con valor inicial
print(sum(numbers, 10)) # Salida: 25
1.3 Ejecución de código
Y aún hay dos funciones que pueden serte útiles como principiante:
eval()
exec()
Poseen capacidades poderosas, pero requieren ser usadas con cuidado debido a los potenciales riesgos de seguridad. Aquí tienes información detallada sobre cada una:
Función eval()
La función eval(expression)
toma una cadena y la ejecuta como una
expresión de Python. Devuelve el resultado de esa ejecución.
Se usa para evaluar expresiones de cadena como código Python.
Ejemplos:
x = 10
result = eval("x + 5")
print(result) # Salida: 15
Función exec()
La función exec()
toma una cadena y la ejecuta como código Python.
A diferencia de eval()
, que solo ejecuta expresiones,
exec()
puede ejecutar cualquier instrucción Python, incluyendo
definiciones de funciones, bucles e importación de módulos. Esta función no devuelve
valor.
Se utiliza para ejecutar scripts dinámicos y definir nuevas funciones o clases durante la ejecución del programa.
code = """
def greet(name):
print(f"Hello, {name}!")
greet("Alice")
"""
exec(code)
# Salida: Hello, Alice!
¡Importante!
Tanto eval()
como exec()
pueden ser peligrosos
cuando se utilizan con entradas no confiables. Ten cuidado
y evita usar exec()
para ejecutar código en producción.
GO TO FULL VERSION