解决财务数据为空值或分母为0的异常

This commit is contained in:
王思川 2022-01-06 12:29:25 +08:00
parent c9fa3baf52
commit 62bb7a640a
1 changed files with 47 additions and 23 deletions

View File

@ -1,3 +1,30 @@
import functools
def params_check(params_index):
"""
参数校验
Parameters:
params_index: 参数顺序下标
Returns:
1.若参数中有None或除法计算分母为0 返回None
2.通过检验 返回func
"""
def decorator(func):
@functools.wraps(func)
def internal(*args, **kwargs):
# 检查参数中有没有None
if None in args:
return None
# 检查分母是否为0
if sum([args[index] for index in params_index]) == 0:
return None
return func(*args, **kwargs)
return internal
return decorator
@params_check([1, 2])
def roe(param1, param2, param3):
"""
ZH: 净资产收益率
@ -9,14 +36,12 @@ def roe(param1, param2, param3):
Returns:
value - float 净资产收益率
"""
if param2 + param3 == 0:
return None
else:
value = param1 / (param2 + param3) * 2 * 100
value = round(value, 2)
return value
@params_check([2, 3])
def roa(param1, param2, param3, param4):
"""
ZH: 总资产报酬率
@ -29,14 +54,12 @@ def roa(param1, param2, param3, param4):
Returns:
value - float 总资产报酬率
"""
if param3 + param4 == 0:
return None
else:
value = (param1 + param2) / (param3 + param4) * 2 * 100
value = round(value, 2)
return value
@params_check([1, 2])
def tat(param1, param2, param3):
"""
ZH: 总资产周转率
@ -48,14 +71,12 @@ def tat(param1, param2, param3):
Returns:
value - float 总资产周转率
"""
if param2 + param3 == 0:
return None
else:
value = param1 / (param2 + param3) * 2 * 100
value = round(value)
return value
@params_check([1])
def acrt(param1, param2):
"""
ZH: 应收账款周转速度
@ -66,13 +87,11 @@ def acrt(param1, param2):
Returns:
value - float 应收账款周算速度
"""
if param2 == 0:
return None
else:
value = round(param1 / param2, 2)
return value
@params_check([1, 2])
def ivtt(param1, param2, param3):
"""
ZH: 存货周转率
@ -92,6 +111,7 @@ def ivtt(param1, param2, param3):
return value
@params_check([1])
def dbar(param1, param2):
"""
ZH: 资产负债率
@ -134,6 +154,7 @@ def icm(param1, param2, param3, param4, param5):
return None
@params_check([2])
def qkr(param1, param2, param3):
"""
ZH: 速动比率
@ -154,6 +175,7 @@ def qkr(param1, param2, param3):
return value
@params_check([1])
def bgr(param1, param2):
"""
ZH: 营业增长率
@ -173,6 +195,7 @@ def bgr(param1, param2):
return value
@params_check([1])
def tagr(param1, param2):
"""
ZH: 总资产增长率
@ -192,6 +215,7 @@ def tagr(param1, param2):
return value
@params_check([1])
def tio(param1, param2):
"""
ZH: 技术投入比率