1

首先解释代码会更容易解释我的问题。

def initialize_function(num,instruction,emplacement1,emplacement2,current_pipeline):
    function_mapping={
    "LOAD" : LOAD(num,emplacement1,emplacement2,current_pipeline),
    "STORE" : STORE(num,emplacement1,emplacement2,current_pipeline),
    "MOVE" : MOVE_IADD(num,emplacement1,emplacement2,current_pipeline),
    "IADD" : MOVE_IADD(num,emplacement1,emplacement2,current_pipeline),
    "FADD" : FADD(num,emplacement1,emplacement2,current_pipeline)
    }
    current_pipeline=function_mapping[instruction] 
    return(current_pipeline)

initialize_function函数有一个参数instructioninstruction是一个字符串,相当于字典的键之一function_mapping。所以当我这样做时,current_pipeline=function_mapping[instruction]它应该只执行instruction. 但事实并非如此。实际上,function_mapping字典在查找密钥之前就已初始化,instruction因此它会依次执行所有函数 LOAD、STORE、MOVE、IADD、FADD。

我能做些什么 ?

先感谢您 :)

MFF

4

1 回答 1

4

由于所有函数的参数都相同,因此应该可以:

def initialize_function(num,instruction,emplacement1,emplacement2,current_pipeline):
    function_mapping={
    "LOAD" : LOAD,
    "STORE" : STORE,
    "MOVE" : MOVE_IADD,
    "IADD" : MOVE_IADD,
    "FADD" : FADD
    }
    current_pipeline=function_mapping[instruction](num,emplacement1,emplacement2,current_pipeline)
    return(current_pipeline)

说明:您的字典值将在运行时评估,因为您实际上是在调用函数。你想传递对它们的引用,因为函数是 python 中的第一类对象,你可以这样做。

于 2012-12-14T01:50:48.550 回答