gpt4 book ai didi

javascript - 在字典中存储函数 [Python]

转载 作者:太空狗 更新时间:2023-10-29 20:27:24 25 4
gpt4 key购买 nike

我目前正在构建一个应用程序,在该应用程序中我需要迭代一系列的步骤,这些步骤基本上做同样的事情,保存非常少量的代码(约 15 行)。步骤的数量将根据项目的配置方式而有所不同,因此为每个潜在实例创建一个单独的函数对我来说似乎有点愚蠢。

在 JavaScript 中,我会这样做:

var switches = [true, true, false, true];

var holder = {
0: function() { /* do step0 */ }
1: function() { /* do step1 */ }
2: function() { /* do step2 */ }
3: function() { /* do step3 */ }
// ...etc...
}

for (var i = 0; i < switches.length; i++)
if (switches[i])
holder[i]();

有没有办法在 python 中做类似的事情?我唯一能想到的是这样的:

switches = [True, True, False, True]

class Holder(object):
@staticmethod
def do_0():
# do step0

@staticmethod
def do_1():
# do step 1

# ...etc...

def __repr__(self):
return [self.do_0, self.do_1, ...]

for action in Holder:
action()

如果我有很多步骤,这看起来效率非常低。有没有更好的方法来解决这个问题?

最佳答案

您可以按如下方式执行此操作:

# define your functions
def fun1():
print("fun1")

def fun2():
print("fun2")

def fun3():
print("fun3")


switches = [True, False, True];

# put them in a list (list makes more sense than dict based on your example)
func_list = [fun1, fun2, fun3]

# iterate over switches and corresponding functions, and execute
# functions when s is True
for s,f in zip(switches, func_list):
if s: f()

这只是一种方式。还有很多其他的。例如根据需要使用 lambda、dict 等。

如果您的函数只有一行,要使用 lambda,您可以这样做:

func_list = [lambda: print("lambda1"), 
lambda: print("lambda2"),
lambda: print("lambda1")]

关于javascript - 在字典中存储函数 [Python],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29245004/

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