def fun (a,b):
try:
c = a/b
except Exception as ex:
logging.error(ex)
return c
请高手回答向这种函数的返回是不是一种不正规的编程方式,因为这个函数可能返回为“None”,那么例如这种情况的时候如何更好的定义这个函数?
def fun (a,b):
try:
c = a/b
except Exception as ex:
logging.error(ex)
return c
请高手回答向这种函数的返回是不是一种不正规的编程方式,因为这个函数可能返回为“None”,那么例如这种情况的时候如何更好的定义这个函数?
按照程序的逻辑,当出现error的时候就无法return,只有logging的输出,所以返回为空。可以这样进行调整:
def fun(a, b):
try:
c = a/b
except Exception as error:
logging.error(error)
c = 0
return c
异常情况也应该保留一个赋值,这样是较好当时,避免之后的程序会有其他的问题,你这个应该是为了防止分母为0, 所以同样的,可以做这样的操作:
def fun(a,b):
if b == 0:
logging.info('b=0')
res = 0
else:
res = a/b
return res
这个还是根据情况而定把,如果就按你这个列子,我觉得可以直接 return a/b
调用这个函数时捕获异常,因为这种情况下,函数返回结果直接影响了后面的计算,如果对后面影响不大,可以先处理异常,然后返回None
def fun(a, b):
try:
c = a/b
except ZeroDivisionError:
logger.error(traceback.format_exc())
c = float('inf') if a > 0 else float('-inf')
finally:
return c
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
2 回答2k 阅读✓ 已解决
当b为0的时候应该走不到return c这里,程序会退出的吧,似乎应该在except的前面加一个return,同时在logging语句后面加return None。