如何使这个包含大量参数的计算函数更具可读性?

2024-05-16 10:43:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我做了一个计算器,用来计算某笔买卖的佣金。你知道吗

佣金的价值取决于许多因素。因此,必须传递给我计算佣金的函数的参数也非常大。函数本身也是非常混乱的,因为一些因素是布尔值(newcustomer,f.e.),一些是浮动值(transportcosts,f.e.)。你知道吗

如何使这些“计算函数”更具可读性?我应该把它们分成小块吗?你知道吗

这里是函数,尽管我也在寻找关于如何处理这类函数的更一般的建议。你知道吗

def get_provision_sales(
    verkaufspreis_hw,
    einkaufspreis_hw,
    vk_software,
    ek_software,
    bonafide,
    laufzeit,
    abloese,
    gebraucht,
    neukunde,
    spedition,
    sonstige_kosten,
    provision_pct = 0.33,
    service_pct=0.035,
    solutions=False ):

    if spedition:
        spedition_amount = 89.99
    else:
        spedition_amount = 0

    verkaufspreis_hw = verkaufspreis_hw or 0

    if vk_software > 0:
        software_mod = 0.7
    else:
        software_mod = 1    

    if not bonafide:
        provision_modifier = 0.76
    else:
        provision_modifier = 1

    if neukunde:
        provision_pct = 0.27

    laufzeit = laufzeit or 0
    abloese = abloese or 0

    if gebraucht:
        db_modifier = 1
        sonstige_kosten = 0
        deckungsbeitrag = 0.6 * float(verkaufspreis_hw)
    else:
        db_modifier = 0.85
        deckungsbeitrag = float(verkaufspreis_hw) - ( float(einkaufspreis_hw) + float(abloese) + float(spedition_amount) )

    provision_sales = (deckungsbeitrag * db_modifier + float(sonstige_kosten)) * provision_pct * provision_modifier

    provision_sales += software_mod*0.15*(float(vk_software)-float(ek_software))

    return provision_sales

Tags: 函数ifsoftwarefloatelsevkmodifiersales