我在python中有以下代码:
def update(request, id):
success = 0
try:
product = Mattress.objects.get(id=id)
success = 1
except Mattress.DoesNotExist:
pass
if success == 1:
return render_to_response("success.html")
else:
return render_to_response('failure.html')
此代码是否是检查“成功”布尔值的有效方法。如果代码通过try语句,“success”会更改为1还是保持为0?
答案 0 :(得分:9)
回答你的问题:
python中的布尔值是否可变?
是和否。分配了布尔值的变量(可能总是,并且在这种情况下肯定是可变的)是可变的,是的。它们也不限于分配布尔值,因为变量不是静态类型的。
但布尔值True
和False
本身并不可变。他们是无法修改的单身人士。
查看您的实际代码:
if success = 1:
语法无效,你想要==
。此外,惯用语言您不应该使用0
和1
来表示成功和失败值,您应该使用True
和False
。所以你应该重构这样的事情:
def update(request):
success = False
try:
product = Mattress.objects.get(id=id)
success = True
except Mattress.DoesNotExist:
pass
if success:
return render_to_response("success.html")
else:
return render_to_response('failure.html')
答案 1 :(得分:1)
是。成功后,success
将更改为1。
答案 2 :(得分:1)
此代码段存在一些问题。
True
和False
。if success == 1:
或if success == True:
答案 3 :(得分:1)
您应该考虑使用实际的布尔值而不是整数。您可以将success
设置为true
或false
,Python会将它们解释为值为1和0的关键字。使用数字可能有点棘手,因为有些语言会解释不同的东西。在某些语言中,0为false
,但除0之外的任何值都被视为true
。但是你的问题的答案是肯定的,它会正常工作。