在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ python 函數(shù)返回為None ,這樣的函數(shù)是不是不正規(guī)?

python 函數(shù)返回為None ,這樣的函數(shù)是不是不正規(guī)?

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

請高手回答向這種函數(shù)的返回是不是一種不正規(guī)的編程方式,因?yàn)檫@個(gè)函數(shù)可能返回為“None”,那么例如這種情況的時(shí)候如何更好的定義這個(gè)函數(shù)?

回答
編輯回答
撿肥皂

當(dāng)b為0的時(shí)候應(yīng)該走不到return c這里,程序會退出的吧,似乎應(yīng)該在except的前面加一個(gè)return,同時(shí)在logging語句后面加return None。

2018年1月2日 05:44
編輯回答
短嘆

按照程序的邏輯,當(dāng)出現(xiàn)error的時(shí)候就無法return,只有l(wèi)ogging的輸出,所以返回為空??梢赃@樣進(jìn)行調(diào)整:

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

異常情況也應(yīng)該保留一個(gè)賦值,這樣是較好當(dāng)時(shí),避免之后的程序會有其他的問題,你這個(gè)應(yīng)該是為了防止分母為0, 所以同樣的,可以做這樣的操作:

def fun(a,b):
    if b == 0:
        logging.info('b=0')
        res = 0
    else:
        res = a/b
    return res

    
2018年9月1日 07:02
編輯回答
有點(diǎn)壞

這個(gè)還是根據(jù)情況而定把,如果就按你這個(gè)列子,我覺得可以直接 return a/b 調(diào)用這個(gè)函數(shù)時(shí)捕獲異常,因?yàn)檫@種情況下,函數(shù)返回結(jié)果直接影響了后面的計(jì)算,如果對后面影響不大,可以先處理異常,然后返回None

2018年1月12日 04:49
編輯回答
厭惡我
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
2017年5月13日 06:59