【发布时间】:2019-04-24 15:00:26
【问题描述】:
考虑以下代码:
import shutil
import time
t = time.time()
exception = None
while time.time() < (t + 10.0):
try:
shutil.rmtree('/path-to-non-existent-directory')
break
except OSError as exception:
pass
time.sleep(0.1)
else:
if exception:
raise exception
在 Python 2.7 中,此代码完全有效,但在 Python 3.7 中,我收到以下警告:
Local variable exception might be referenced before assignment
在else 子句中。
有人知道在 Python 3.7 中运行时这个 sn-p 有什么问题吗?
【问题讨论】:
-
@ThomasWeller
except OSError as exception:不会将exception设置为不为假的东西吗? -
this question 是相关的,但那里的答案都说在循环之前初始化变量应该可以防止警告。
-
@Eric Salemi - 我已经在 Python 3.7 中尝试过,它返回一个错误,提示“计时器”、“shutil”、“cls”和“时间”未定义。但在 Python 2.7 中,'Timer'(仅限)似乎没有定义。你应该初始化你的变量,以尽量减少错误。
-
@Eric Salemi - 添加一个“导入时间”来初始化“时间”变量。
-
您究竟是如何收到该警告的?听起来更像是一个过分热心的短绒比其他任何东西。我无法简单地通过运行代码来重现该警告。
标签: python