首页 > 解决方案 > 将具有不同数量变量的参数传递给函数

问题描述

我正在尝试创建一个函数,该函数将采用一些定义的随机参数,而另一些则没有。所以我有这个搜索功能,它有时会接受所有的参数,但有时只是 url、query 和 authHeader。

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

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

标签: pythonpython-3.x

解决方案


查看您的问题,我相信解决此问题的一种方法是将您的几个函数参数设置为默认哨兵值(通常None;使用在您的场景中有意义的任何默认值),这样您就不必传递这些值函数调用;如果你确实传递了它们,它们就会像普通参数一样被处理。您的函数定义如下所示:

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

此外,如果or is ,您可能必须更改searchRequest函数中的定义。resultLimitresultInfoSizeNone


推荐阅读