在我的代码中,将参数提供的值传递给已定义的函数似乎是不可能的。我在做什么错了?
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)
,也会产生相同的错误。
答案 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
函数删除其字典信封之一。