当前位置:  开发笔记 > 编程语言 > 正文

缩短经常使用的代码段以测试Python中的返回值

如何解决《缩短经常使用的代码段以测试Python中的返回值》经验,为你挑选了1个好方法。

考虑一下这个Python片段:

def someTestFunction():
    if someTest:
        return value1
    elif someOtherTest:
        return value2
    elif yetSomeOtherTest:
        return value3
    return None

def SomeCallingFunction():
    a = someTestFunction()
    if a != None:
        return a

    ... normal execution continues

现在,问题是:SomeCallingFunction开始时的三行段获取测试函数的值,如果它不是None,则在许多其他函数中经常重复.三条线太长了.我想把它简化为一个.我怎么做?

我可以自由地重构这个代码,然而someTestFunction的内容却需要.我想过使用异常,但这些似乎没有帮助减少调用代码长度.

(我已经阅读了一些关于Python装饰器的内容,但是没有使用过它们.这会是不是这个地方?它会如何工作?)



1> DNS..:

如果你想使用装饰器,它看起来像这样:

def testDecorator(f):
    def _testDecorator():
        a = someTestFunction()
        if a is None:
            return f()
        else: return a
    return _testDecorator

@testDecorator
def SomeCallingFunction():
    ... normal execution

首次导入模块时,它会运行testDecorator,并将原始模块SomeCallingFunction作为参数传递给它.返回一个新函数,并绑定到该SomeCallingFunction名称.现在,无论何时调用SomeCallingFunction,它都会运行其他函数,它会执行检查,并返回a原始结果或者原始结果SomeCallingFunction.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有