我该怎么做? 可以我这样做吗?
def aFunction(argument):
def testSomething():
if thisValue == 'whatItShouldBe':
return True
else:
return False
if argument == 'theRightValue': # this is actually a switch using elif's in my code
testSomething()
else:
return False
def aModuleEntryPoint():
if aFunction(theRightValue) == True:
doMoreStuff()
else:
complain()
aModuleEntryPoint()
aModuleEntryPoint()
需要首先确保条件在开始执行之前为真。由于封装,aModuleEntryPoint
不知道如何检查条件,但aFunction()
有一个名为testSomething()
的子函数,它知道如何检查条件。 aModuleEntryPoint()
来电aFunction(theRightValue)
。
由于theRightValue
作为参数传递给aFunction()
,aFunction()
会调用testSomething()
。 testSomething()
执行逻辑测试,并返回True
或False
。
我需要aModuleEntryPoint()
知道testSomething()
决定了什么。我不希望aModuleEntryPoint()
知道testSomething()
如何得出结论。
在删除其他函数和什么不是的时候发布我的实际来源实际上是一个成就,所以我不得不设置这样的一般要点。
答案 0 :(得分:4)
我现在唯一看错的是你需要在第9行return
之前testSomething()
。
答案 1 :(得分:0)
也许子功能不是适合您的封装工具。您希望将内部功能公开给外部实体。 Python类提供了一种比子函数更好的表达机制。拥有一个类,您可以以非常受控的方式公开您想要的任何内部功能部分。
答案 2 :(得分:0)
我第一次想到你的代码是因为它太复杂了。为什么要aFunction
?你可以写
def aModuleEntryPoint():
argument = ...
if argument in (theRightValue, theOtherRightValue, theOtherOtherRightValue)\
and testSomething():
doMoreStuff()
else:
complain()
这个if
子句将首先检查argument
是否是可能的正确值之一,如果是,则它将继续调用testSomething()
并检查返回值。仅当返回值为true时,才会调用doMoreStuff()
。如果其中一个测试失败(这就是我使用and
的原因),它将complain()
。