我有以下变量,用户可以选择通过表单提交这些变量(不是必需的,但可以这样做以过滤搜索)。color = request.GET.get ('color')size = request.GET.get ('size')现在,我想将这些变量传递给函数,但前提是它们存在。如果它们不存在,我只想运行不带参数的函数。没有参数的函数是:apicall = search ()只有颜色apicall = search (color)并带有颜色和尺寸apicall = search (color, size)如果定义了参数,我想将其传递给函数,但是如果没有定义,我就不想将其传递给函数。最有效的方法是什么?python有内置方法吗?
3 回答

小唯快跑啊
TA贡献1863条经验 获得超2个赞
在python 3中,您可以将它们打包在一个列表中,对其进行过滤,然后使用*-operator将该列表解压缩为以下参数search:
color = request.GET.get ('color')
size = request.GET.get ('size')
args = [ arg for arg in [color, size] if arg ]
search(*args)
但是请注意,如果color是虚假且size是真实的,则您将search使用1个参数作为的值进行调用size,这可能是错误的,但是在这种情况下,原始问题并未提及所需的行为。
(因为我一直在寻找比我的解决方案更好的解决方案,但发现了这个问题)
添加回答
举报
0/150
提交
取消