假设我在另一个函数中有两个函数,如下所示:
def FooBar(isTheWorldRound = True):
def Foo():
print("Hi, I'm foo.")
def Bar():
print("Hi, I'm bar.")
theFunction = None
if (isTheWorldRound):
return Bar
else:
return [Bar, Foo]
所以,我可以这样做:
myFunction = FooBar(False)
myFunction()
>>> Hi, I'm Bar
>>> Hi, I'm Foo
关于这个例子,我有两个问题:
Foo
的情况下实现这一点?你知道吗
您当然可以按照
FooBar
将返回一个函数来计算其中一个或两个函数的方式来组合一个新函数。你知道吗考虑一下:
您可以在
FooBar
中创建一个闭包,以返回单个组合:幸运的是,这在Python中很容易,因为函数是一级对象。你知道吗
Edit:似乎您希望在执行
FooBar
期间直接执行函数。然后可以放弃闭包,但仍然调用循环中的所有函数。你知道吗把两个函数放到一个列表中,就得到了一个函数列表。它不会生成一个调用前面两个函数的新函数。为此,您需要定义一个新的包装函数,例如:
(如果
*
语法不熟悉,请参见What does ** (double star) and * (star) do for parameters?),您现在可以这样使用:另请注意:
有点尴尬,我会这样写:
您还应该根据the style guide重命名函数/变量。你知道吗
将注释行替换为:
它将按预期工作:
它所做的是创建一个匿名函数,在调用时同时调用
Foo()
和Bar()
,并返回None
。你知道吗相关问题 更多 >
编程相关推荐