gpt4 book ai didi

python - 向函数添加行

转载 作者:太空宇宙 更新时间:2023-11-03 15:07:24 25 4
gpt4 key购买 nike

假设我在另一个函数中有两个函数,如下所示:

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

关于这个例子,我有两个问题:

  1. 执行注释行的正确方法是什么?
  2. 有没有一种方法可以在不显式定义 Foo 的情况下做到这一点?

最佳答案

将两个函数放入一个列表中即可实现;函数列表。它不会创建一个调用之前两个函数的新函数。为此,您需要定义一个新的包装函数,例如:

def call_all(*funcs):
"""Create a new wrapper to call each function in turn."""
def wrapper(*args, **kwargs):
"""Call the functions and return a list of their outputs."""
return [func(*args, **kwargs) for func in funcs]
return wrapper

(如果不熟悉 * 语法,请参阅 What does ** (double star) and * (star) do for parameters?),您现在可以像这样使用它:

theFunction = call_all(Bar, Foo)

另请注意:

theFunction = None
if (isTheWorldRound):
return Bar
else:
return [Bar, Foo]

有点尴尬,我会这样写:

if isTheWorldRound:
return Bar
return [Bar, Foo]

您还应该根据 the style guide 重命名函数/变量.

关于python - 向函数添加行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31048078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com