解决财务数据为空值或分母为0的异常
This commit is contained in:
parent
c9fa3baf52
commit
62bb7a640a
|
@ -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
|
||||
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
|
||||
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
|
||||
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
|
||||
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: 技术投入比率
|
||||
|
|
Loading…
Reference in New Issue