python - 将具有不同数量变量的参数传递给函数
问题描述
我正在尝试创建一个函数,该函数将采用一些定义的随机参数,而另一些则没有。所以我有这个搜索功能,它有时会接受所有的参数,但有时只是 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
解决方案
查看您的问题,我相信解决此问题的一种方法是将您的几个函数参数设置为默认哨兵值(通常None
;使用在您的场景中有意义的任何默认值),这样您就不必传递这些值函数调用;如果你确实传递了它们,它们就会像普通参数一样被处理。您的函数定义如下所示:
def search(url, query, authHeader, resultLimit=None, resultInfoSize=None):
此外,如果or is ,您可能必须更改searchRequest
函数中的定义。resultLimit
resultInfoSize
None
推荐阅读
- angular - 我可以在本地安装@angular/cli@4.2.2 而不在全局降级最新的@angular/cli@6.2.0 版本吗?
- firebase - Firebase database().ref() 不存在的路径
- xml - 如何让我的机器人按顺序而不是随机提问?
- python - 2d 数组到 3d 图像矩阵
- php - 如何防止 fwrite():对等方重置连接
- javascript - 我应该如何实现我的鼓机应用程序?
- python - Python plotly“甘特图”图表,x轴上有时间,使用日期时间和plotly
- php - 如何正确输出连接表?
- powershell - Jenkins 和 powershell 将(数据)视为 cmdlet
- azure - ChatBot QnaMaker(Microsoft Azure)与 Lex(亚马逊 AWS)