python 函数返回为None ,这样的函数是不是不正规?

def fun (a,b):
   try:
       c = a/b
   except Exception as ex:
       logging.error(ex)
   return c

请高手回答向这种函数的返回是不是一种不正规的编程方式,因为这个函数可能返回为“None”,那么例如这种情况的时候如何更好的定义这个函数?

阅读 4.9k
4 个回答

当b为0的时候应该走不到return c这里,程序会退出的吧,似乎应该在except的前面加一个return,同时在logging语句后面加return 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
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题