如果在codeblock中没有引发异常,如何赋值变量为true

时间:2014-05-29 17:18:04

标签: python

我一直在阅读https://wiki.python.org/moin/HandlingExceptionshttps://docs.python.org/2/tutorial/errors.html,但我不清楚以下几点:

让我说我有:

b = true

try:
  statement1
  statement2
  statement3
except: 
  b = false

如果整个代码块无异常执行(我不想对错误进行分类),我希望变量bool保持为true,否则将其设为false。上面的代码会这样做吗?

2 个答案:

答案 0 :(得分:3)

您拥有的代码会执行此操作,因为仅在触发<的情况下,才会重新分配bool

bool = true

try:
  statement1
  statement2
  statement3
except: #Only enters if there is an exception
  bool = false 

示例1:

>>> bool = True
>>> try:
...     raise ValueError
... except:
...     bool = False
... 
>>> bool
False

示例1 中,bool仅被修改,因为存在错误(raise引发了异常)。

示例2:

>>> bool = True
>>> try:
...     var = 0
... except:
...     bool = False
... 
>>> bool
True
>>> 

示例2 中,变量已更改,因为没有异常,因此没有理由输入except

答案 1 :(得分:-1)

您将使用else子句,该子句仅在未引发 的情况下执行。

try:
    ...
except ...:
    flag = False
else:
    flag = True

请注意,一般情况下,使用裸露的异常处理程序并不是一个好主意,因为你在这里完全可以解决异常问题。如果你想记录异常并重新提升它,那就是一个稍微不同的故事。