Me gustaría mejorar la forma en que se escribe este código. En este momento tengo seis métodos que son casi copiar y pegar, solo una línea está cambiando. ¿Cómo puedo hacer un método genérico y dependiendo de la propiedad de la entrada de datos para cambiar los cálculos? Estaba pensando en usar la programación funcional para lograr eso, pero no estoy seguro de cómo hacerlo correctamente.
El método es obtener un objeto dict. Entonces este objeto se transforma en JSON. La mid
variable está almacenando un JSON con una tasa media para la moneda desde una API externa, debe estar antes del ciclo for, de lo contrario, se llamará a la API en cada iteración y esto ralentiza mucho el proceso. Luego, en el for
bucle, itero a través de los datos de la entrada. La única diferencia entre los métodos es el cálculo antes de insertarlo en la lista..append(mid_current - bankMSell)
def margin_to_exchange_rate_sell(data):
j = data.to_JSON()
list_p = []
mid = midrate.get_midrate(j["fromCurrency"][0])
for idx, val in enumerate(j['toCurrency']):
try:
mid_current = 1/get_key(mid, j['toCurrency'][idx])
bankMSell = float(j['sellMargin'][idx])
list_p.append(mid_current - bankMSell)
except Exception as e:
list_p.append(0)
print(str(e))
return list_p
Otro de los métodos:
def margin_to_exchange_rate_buy(data):
j = data.to_JSON()
list_p = []
mid = midrate.get_midrate(j["fromCurrency"][0])
for idx, val in enumerate(j['toCurrency']):
try:
mid_current = 1/get_key(mid, j['toCurrency'][idx])
bankMSell = float(j['sellMargin'][idx])
list_p.append(mid_current + bankMSell)
except Exception as e:
list_p.append(0)
print(str(e))
return list_p
fuente
list_p.append()
línea, para aquellos que no son muy expertos en diferenciar el código visualmente. :))Respuestas:
De hecho, hay una manera de reducir el código aquí con lambdas :
fuente
m
yb
otro más descriptivo considerando que es código financiero :)