Я хотел бы улучшить способ написания этого кода. Прямо сейчас у меня есть шесть методов, которые почти копирование-вставка, меняется только одна строка. Как сделать общий метод и в зависимости от свойства ввода данных изменить расчеты? Я думал использовать функциональное программирование для достижения этой цели, но я не уверен, как это сделать правильно.
Метод получает объект dict. Затем этот объект преобразуется в JSON. mid
Переменная хранения JSON с midrate для валюты от внешнего API, он должен быть перед циклом иначе API будет вызываться в каждой итерации и это замедляет процесс много! Затем в for
цикле я перебираю данные из входных данных. Единственная разница между методами заключается в расчете до его вставки в список..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
Еще один из методов:
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
источник
list_p.append()
строка для тех, кто не очень хорошо разбирается в коде визуально. :))Ответы:
Действительно, есть способ уменьшить код здесь с помощью лямбды :
источник
m
иb
к чему - то более описательный учитывая , что это финансовый код :)