有什么更好的方法呢?

时间:2014-10-17 05:09:26

标签: python design-patterns

如果发现异常,我会回来None

   def getObject(ver):
        av = None
        try:
            av = getTestObject(ver)
        except exceptions.ObjectNotFound, err:
            _log.info("%r not Found", obj.fromTestObject(ver))
        return av

或者这更好?

def getObject(ver):
    try:
        av = getTestObject(ver)
    except exceptions.ObjectNotFound, err:
        _log.info("%r not Found", obj.fromTestObject(ver))
    else:
         return av

2 个答案:

答案 0 :(得分:2)

与您的第一个代码段等效的更短(更多Pythonic,恕我直言)如下:

def getObject(ver):
    try:
        return getTestObject(ver)
    except exceptions.ObjectNotFound, err:
        _log.info("%r not Found", obj.fromTestObject(ver))

这是有效的,因为如果控件到达函数的末尾而没有遇到None,python函数会隐式返回return。(如果你的异常被捕获就会出现这种情况)。

答案 1 :(得分:-1)

第一个代码更好。

原因:

在将返回值设置为变量av。

之前可能会发生异常

在第一个代码中,如果发生异常,将返回None。在第二个代码中,如果发生异常,则返回值未定义。

没有比未定义更好的返回值。