将变量量不同的参数传递给函数

2024-06-06 22:37:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个函数,该函数将随机选取一些已定义的参数,而另一些则不是。 所以我有一个搜索函数,它有时接受所有参数,但有时只接受url、query和authHeader

我确实研究过arg和kwards,但恐怕它们不适合这种情况。 或者我总是要给它们一些值,比如“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

Tags: 函数noneurlsearch参数ifsessiondef
1条回答
网友
1楼 · 发布于 2024-06-06 22:37:17

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

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

此外,如果resultLimitresultInfoSizeNone,则可能必须更改函数中的searchRequest定义

相关问题 更多 >