因此,我尝试通过使用字典选择要运行的函数来减少嵌套的if。在测试中调用execute时,通常使用“ execute(“ BACKUP”,“ / home / src”,“ / home / dest”)“来调用它
但是由于某种原因,它两次都运行BACKUP选项。我究竟做错了什么?我正在使用Python3
def execute(jobtype, src, dst):
if jobtype == "FULL":
_o_src = fs.Index(src)
fs.MakeFolders(_o_src.GetFolders(), dst)
fs.MakeFiles(src, dst, _o_src.GetFiles())
if jobtype == "INCREMENTAL":
print("DO INCREMENTAL BACKUP " + src + " TO " + dst)
# Do the things
options = {
"BACKUP": execute(self.jobtype, self.src, self.dst),
"RESTORE": execute(self.jobtype, self.dst, self.src),
}
options[jobtype]()
最佳答案
您没有将execute
函数存储在options
字典中。您正在存储调用该函数的结果。而且由于这两种方法都是相同的函数,并且传递了不同的参数,因此您实际上不需要该函数成为dict中的值。您需要参数。将最后四行更改为:
options = {
"BACKUP": [self.jobtype, self.src, self.dst],
"RESTORE": [self.jobtype, self.dst, self.src],
}
execute(*options[jobtype])
关于python - 选择功能的Python字典将全部运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50282387/