将参数传递给函数调用时出现“ SyntaxError:关键字arg之后为非关键字arg”

时间:2019-04-29 15:46:00

标签: python python-2.7 arguments

在我的代码中,将参数提供的值传递给已定义的函数似乎是不可能的。我在做什么错了?

def setParams(params):
    retList=[]
    for param in params:
        retList.append(dict(actualParameterName=param,value=params[param]))
    return dict(parameters=dict(actualParameter=retList))

def runProcedure(procedure, project, invalidlyValidArguments):
    print(cmdr.httpPost(cmdr.makeEnvelope(
                        cmdr.createRequest('runProcedure',
                            dict(procedureName=procedure,
                                projectName=project,
                                setParams(params=invalidlyValidArguments)
    )))))

#Intended_Purpose=runProcedure(procedure='Build_Single_Module_For_Every_Config',project='My-module',validInvalidArgs={'moduleSelection':'Some_Handler','hakuna':'mattata'})

我希望此评估会很干净,但是我得到

File "<ipython-input-34-c27d4a9b1a82>", line 19
setParams(params=invalidlyValidArguments)
SyntaxError: non-keyword arg after keyword arg

即使我将第19行设置为setParams(invalidlyValidArguments),也会产生相同的错误。

1 个答案:

答案 0 :(得分:0)

我没意识到我先前对dict()的调用已经需要一个键值对。正如我以为我对函数调用不满意,Python不是,而是它无法将setParams的输出解释为键/值对。

setParams(params=invalidlyValidArguments) 无法为基础dict()调用求值得出有效的密钥对。

我需要更改

                            dict(procedureName=procedure,
                                projectName=project,
                                setParams(params=invalidlyValidArguments)#this is NOT a valid key-pair 
                            )

类似

                            dict(procedureName=procedure,
                                projectName=project,
                                parameters=setParams(invalidlyValidArguments)  

并使该setparams函数删除其字典信封之一。