将具有不同数量变量的参数传递给功能

时间:2018-07-04 07:52:41

标签: python python-3.x

我正在尝试创建一个函数,该函数将采用随机量的某些定义的参数,而有些则没有。 因此,我具有此搜索功能,该功能有时会使用所有参数,但有时只会使用url,查询和authHeader。

我确实研究过* arg,** kwards,但是AFAIK在这种情况下不适合。 还是在我的情况下总是必须给他们一些价值,例如“ null”?但这意味着我需要为变量分配一个值,而不能同时 pass 呢?

def search(url, query, resultLimit, resultInfoSize, authHeader):
searchRequest = session.post(url + '/services/search?q=' + query + '&num=' + resultLimit + '&datalinesToReturn='+ resultInfoSize, headers=authHeader)
searchData = searchRequest.json()
return searchData

任何意见都很感激。

更新

@Jerrybibo友善地表示我提出了要求:

因此,如果函数中的条件是我想要的,请添加。在调用时不更改函数 if 中的默认值。

def search(url, query, resultLimit, authHeader, resultLimit=None, resultInfoSize=None):
if resultLimit == None: resultLimit='50'
if resultInfoSize == None: resultInfoSize=''
searchRequest = session.post(url + '/services/search?q=' + query + '&num=' + resultLimit + '&datalinesToReturn='+ resultInfoSize, headers=authHeader)
searchData = searchRequest.json()
return searchData

1 个答案:

答案 0 :(得分:1)

针对您的问题,我认为解决此问题的一种方法是将几个函数参数设置为默认标记值(通常为None;在您的方案中使用任何默认值),以便您不必必须在函数调用时传递值;如果您通过它们,它们将像普通参数一样被处理。您的函数定义如下所示:

def search(url, query, authHeader, resultLimit=None, resultInfoSize=None):

另外,如果searchRequestresultLimitresultInfoSize,则可能必须在函数中更改None定义。