Chciałbym poprawić sposób pisania tego kodu. Obecnie mam sześć metod, które są prawie kopiowane-wklej, zmienia się tylko jedna linia. Jak mogę stworzyć ogólną metodę i w zależności od właściwości danych wejściowych zmienić obliczenia? Myślałem o użyciu programowania funkcjonalnego, aby to osiągnąć, ale nie jestem pewien, jak to zrobić poprawnie.
Metoda polega na uzyskaniu obiektu dict. Następnie ten obiekt jest przekształcany w JSON. mid
Zmienna jest przechowywanie JSON z midrate dla waluty z zewnętrznego interfejsu API, musi być wcześniej pętli for inaczej API zostanie wywołana w każdej iteracji i spowalnia proces dużo! Następnie w for
pętli iteruję dane z wejścia. Jedyną różnicą między metodami jest obliczenie przed umieszczeniem go na liście..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
Kolejna z metod:
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
źródło
list_p.append()
linią dla tych, którzy nie są biegli w różnicowaniu kodu wizualnie. :))Odpowiedzi:
Rzeczywiście istnieje sposób na zmniejszenie kodu tutaj za pomocą lambdas :
źródło
m
ib
na coś bardziej opisowego, biorąc pod uwagę, że jest to kod finansowy :)