在Python3中创建引用字典中不同条目的动态函数

2024-09-29 22:23:05 发布

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

我有以下功能:

def mapLocation1():
if rooms[1]["mapLoc"] == rooms[currentRoom]["mapLoc"]:
    #return(stuff)
elif "item" in rooms[1]:
    #return(stuff)
else:
    #return(stuff)

这个特殊的函数可以在我的程序中使用几次,最多可以使用三十次。当然,复制上面的函数很多次都不能得到很好的代码,修改起来很麻烦,而且很可能会被扩展,所以我想让它成为一个动态函数。然而,问题是,我的代码指的是我在别处建立的词典。这本词典看起来像这样:

rooms = {
        1 : {
            "mapLoc"    : 1,
            #MoreStuff
            },

        2 : {
            "mapLoc"    : 2,
            #MoreStuff
            },
        }

字典中的几个子集被编号,这个编号总是与上面代码中使用的mapLocation#()相同。词典中的词条由于其内容的性质,必须手工定义,但是如果我能使函数动态化,而不是编写几十个相同的函数,除了一个三次提到的数字之外,这些函数会占用我太多的空间Using the answer to this question I found the following code to make a function dynamic

def makefunc(val):
    def somephase():
        return '%dd' % (val,)
    return somephase

Phase2 = makefunc(2)
Phase3 = makefunc(3)

然而,我尝试将它与我的函数结合起来,使其具有动态性,但到目前为止我没有运气。我怎么能做到这一点有什么想法吗


Tags: theto函数代码returndefval编号

热门问题