【问题标题】:"SyntaxError: non-keyword arg after keyword arg" when passing arguments into function calls [closed]将参数传递给函数调用时出现“语法错误:关键字 arg 之后的非关键字 arg”[关闭]
【发布时间】:2019-04-29 15:46:00
【问题描述】:

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

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),也会产生相同的错误。

【问题讨论】:

  • 使您的代码更具可读性,问题会自行解决。
  • dict(procedureName=procedure, projectName=project, setParams(params=invalidlyValidArguments) dict 构造函数中的最后一个参数缺少一个键
  • 问题出在您对dict 的调用中。第三项没有键名。

标签: python python-2.7 arguments


【解决方案1】:

我没有意识到我之前对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 函数删除其字典信封之一。

【讨论】:

    猜你喜欢
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多