用户可以向Web API提供X查询参数,例如:
param_a
param_b
param_c
param_a = self.req.params.get('param_a', None)
param_b = self.req.params.get('param_b', None)
param_c = self.req.params.get('param_c', None)
如果未提供给定的查询参数,则其值为“无”。
他们必须提供至少一个,不超过一个或者参数。
在Python 3中,确认至少提供一个且不超过一个参数的有效方法是什么?
答案 0 :(得分:2)
统计他们。
<div id="bodyEquivalent">
</div>
<p id="results">result</p>
由于sum(x is not None for x in (param_a, param_b, param_c)) == 1
的值为True
,因此总和将是不是1
的参数数量。
答案 1 :(得分:0)
@Ignacio Vazquez-Abrams有一个不错的答案。您还可以检查已过滤列表的长度:
if len([p for p in (param_a, param_b, param_c) if p]) != 1:
print("Invalid.")
如果您碰巧有一个参数列表,那么会更短:
if len([p for p in params if p]) != 1:
print("Invalid.")
答案 2 :(得分:0)
设定了多少? 列出所有已设置的列表,并查看它的长度:
len([p for p in (param_a, param_b, param_c) if p != None]) == 1
这就像Ignacio的回答一样,但这不依赖于隐式地将True转换为整数然后对它求和,所以我认为找到列表的长度而不是任何总和的意图有点清楚。 / p>
[根据@ pm-2ring的建议进行编辑,以处理?a=foo&b=&c=bar
等查询字符串可能合理地成为b=''
而我的原始支票会将b
计为“未设置”而不是“设置为空字符串”]。