从字典、导入设置中的字典调用函数

2024-04-25 19:37:03 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一本字典,里面有一堆我用来调用函数的名字。它工作正常,但我更喜欢把它放在我的设置文件。但是,如果这样做,我会从设置文件中得到错误,指出没有使用该名称的函数(即使我当时没有调用它们)。有解决办法吗?你知道吗

def callfunct(id, time):
    #stuff here
def callotherfunct(id, time):
    #stuff here
dict = {"blah blah": callfunct, "blah blah blah": callfunct, "otherblah": callotherfunct}
dict[str(nameid)](id, time)

希望这有意义。我也有其他的想法,但基本上我有50次迭代,这些定义和唯一的名称是由nameid传递的,需要调用特定的函数,这就是为什么我这样做,这样我就可以快速添加新的名称。如果我能把字典无缝地放到设置文件中,显然会更快。你知道吗


Tags: 文件函数名称id字典heretimedef
2条回答

如果你尝试

def f_one(id, time):
    pass

def f_two(id, time):
    pass

d = {"blah blah":"f_one", "blah blah blah":"f_one", "otherblah","f_two"
locals()[d[str(nameid)]](id, time)

(将字典初始化替换为只加载带有要调用函数的字符串名的配置文件),这样做有效吗?你知道吗

如果没有,需要更多的信息:配置文件是什么样子的,您是如何加载它的?你知道吗

我猜配置文件部分不起作用的原因是您试图直接从配置文件引用函数,这不应该起作用。这是使用存储在配置文件中的任何内容并在locals()字典中查找它(如果您在函数中,则必须使用globals()

只有在尝试访问字典时,才能使用查找函数初始化字典:

d = {}
d.setdefault('func1', globals()['func1'])()

相关问题 更多 >