Introducción
Al aprender Python, es probable que te encuentres con «@» (arroba) en el código. En particular, los decoradores (@staticmethod
, etc.) o el operador @
utilizado en operaciones matriciales son ejemplos representativos. Sin embargo, para quienes lo ven por primera vez, puede surgir la duda de «¿qué significa este símbolo?».
En este artículo, explicaremos en detalle el rol y el uso del «@» en Python. Específicamente, introduciremos métodos de uso en decoradores, operaciones matriciales, el método query() de pandas, etc., explicándolo de manera clara y comprensible para principiantes.
¿Qué es el «@» en Python?
En Python, el «@» se utiliza principalmente como «decorador». Un decorador es un mecanismo para modificar el comportamiento de funciones o métodos. Además, desde Python 3.5 se introdujo el operador «@», que permite expresar el producto de matrices de manera concisa. Además, en el método query() de pandas hay una forma de usar «@» para referenciar variables.
A continuación, explicamos ejemplos de uso del «@» desde tres puntos de vista.
- Decorador (Decorator): Agrega funcionalidades específicas a funciones o clases.
- Operaciones matriciales (Operador @): Calcula el producto de matrices en NumPy, etc.
- Método query() de pandas: Referencia variables dentro de las consultas de un DataFrame.
¿Qué es un decorador (Decorator)?
Lo básico de los decoradores
Un decorador es un mecanismo que modifica el comportamiento de una función o método colocando «@» antes de ella. Se utiliza principalmente para los siguientes fines.
- Registro de logs
- Medición del tiempo de ejecución
- Restricción del comportamiento de la función (por ejemplo, función de autenticación)
Sintaxis de los decoradores
La sintaxis básica para usar decoradores en Python es la siguiente.
def my_decorator(func):
def wrapper():
print("Antes de ejecutar el procesamiento")
func()
print("Después de ejecutar el procesamiento")
return wrapper
@my_decorator
def my_function():
print("La función principal se ha ejecutado")
my_function()
Resultado de ejecución de los decoradores
Antes de ejecutar el procesamiento
La función principal se ha ejecutado
Después de ejecutar el procesamiento
Ejemplos prácticos de uso de decoradores
Los decoradores también se incluyen en gran medida en la biblioteca estándar. Por ejemplo, se utiliza «@» al definir métodos de clase o métodos estáticos.
@classmethod
Al definir un método de clase, se utiliza @classmethod
.
class MyClass:
class_variable = "variable de clase"
@classmethod
def class_method(cls):
return f"Se llamó al método de clase: {cls.class_variable}"
print(MyClass.class_method())
@staticmethod
Al definir un método estático, se utiliza @staticmethod
.
class MyClass:
@staticmethod
def static_method():
return "Se llamó al método estático"
print(MyClass.static_method())
El operador «@» en operaciones de matrices
Desde Python 3.5, @
se introdujo el operador. Esto es un operador para expresar de manera concisa el producto de matrices.
Producto de matrices usando NumPy
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = A @ B
print(C)

Uso de «@» en el método query() de pandas
En el método query()
de pandas, se puede referenciar variables usando @
.
Filtrado con variables
import pandas as pd
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]})
threshold = 30
# Referencia al valor de threshold
filtered_df = df.query('age > @threshold')
print(filtered_df)
Resumen
- Los decoradores se utilizan para modificar el comportamiento de funciones o clases.
- El operador «@» de operaciones matriciales simplifica el cálculo del producto matricial en NumPy, etc.
- El método
query()
de pandas permite usar «@» para referenciar variables.
Al entender los usos de «@» y aprovecharlo adecuadamente, se puede lograr una programación en Python más eficiente.