在Python中,布尔值是否可变?

goe*_*elv 1 python django boolean

我在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')
Run Code Online (Sandbox Code Playgroud)

此代码是检查"成功"布尔值的有效方法吗?如果代码通过try语句,"success"会更改为1还是保持为0?

Dan*_*olo 9

回答你的问题:

在Python中,布尔值是否可变?

是的,不是.分配了布尔值的变量(可能总是,并且在这种情况下肯定是可变的)是可变的,是的.它们也不限于分配布尔值,因为变量不是静态类型的.

但布尔True人和False他们自己并不是可变的.他们是无法修改的单身人士.

看看你的实际代码:

if success = 1:
Run Code Online (Sandbox Code Playgroud)

是不是有效的语法,你想要==那里.此外,惯用语言你不应该使用01成功和失败的价值,你应该使用TrueFalse.所以你应该重构这样的事情:

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')
Run Code Online (Sandbox Code Playgroud)