我在网页上有多个数量输入字段,只允许正整数值。
我的第一段代码如下:
quantities = []
for form in forms:
qty= form.cleaned_data['qty']
if qty:
quantities.append(qty)
if not quantities:
raise forms.ValidationError("You didn't choose any books")
在查看我的代码后,我发现了一个较短的版本:
if not any([form.cleaned_data['qty'] for form in forms]):
raise forms.ValidationError("You didn't choose any books")
这总是有效吗?除True
之外,每个整数的评估结果为0
吗?
答案 0 :(得分:4)
一般来说,是的。
除非特别定义,否则python中的大多数对象都被视为True。
参见source&以下例外:
4. Built-in Types (Python 3 documentation)
4.1。真值测试
可以测试任何对象的真值,用于if或while条件或下面布尔运算的操作数。
默认情况下,对象被视为true ,除非其类定义返回False的 bool ()方法或 len ()方法,当使用对象调用时返回零。以下是大多数被认为是错误的内置对象:
定义为false的常量:
无且错误。
任何数字类型的零: 0 , 0.0 , 0j ,十进制(0),分数(0,1)
空序列和集合:&#39; ,(), [] , {} < / strong>,设置(),范围(0)
具有布尔结果的操作和内置函数始终返回 0 或 False 表示false, 1 或 True < / strong>为true,除非另有说明。
(重要的例外:布尔运算或者并且始终返回其中一个操作数。)
答案 1 :(得分:0)
给定整数(int
s)作为您的域名,答案是肯定的。 Python中唯一的 falsy 整数值是0
。当评估为True
时,所有其他整数均为bool
。