Jaa*_*nus 1 python optimization
考虑一下这个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
Run Code Online (Sandbox Code Playgroud)
现在,问题是:SomeCallingFunction开始时的三行段获取测试函数的值,如果它不是None,则在许多其他函数中经常重复.三条线太长了.我想把它简化为一个.我怎么做?
我可以自由地重构这个代码,然而someTestFunction的内容却需要.我想过使用异常,但这些似乎没有帮助减少调用代码长度.
(我已经阅读了一些关于Python装饰器的内容,但是没有使用过它们.这会是不是这个地方?它会如何工作?)
如果你想使用装饰器,它看起来像这样:
def testDecorator(f):
def _testDecorator():
a = someTestFunction()
if a is None:
return f()
else: return a
return _testDecorator
@testDecorator
def SomeCallingFunction():
... normal execution
Run Code Online (Sandbox Code Playgroud)
首次导入模块时,它会运行testDecorator,并将原始模块SomeCallingFunction作为参数传递给它.返回一个新函数,并绑定到该SomeCallingFunction名称.现在,无论何时调用SomeCallingFunction,它都会运行其他函数,它会执行检查,并返回a原始结果或者原始结果SomeCallingFunction.
| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |