【发布时间】:2017-08-29 18:00:16
【问题描述】:
关于这两个选项:
try:
userid = get_userid()
except:
userid = ""
对比
userid = ""
try:
userid = get_userid()
except:
pass
有什么不同吗,特别想知道如果userid 仅设置在try 块内,命名空间将如何工作?它们是否具有相同的命名空间范围?
一个比另一个更受欢迎吗?
【问题讨论】:
-
try 不是新的范围块。变量的作用域是从第一次出现到函数结束,类,...
-
except: pass不应该是首选 -
有一个有趣的问题,有人将其标记为重复。是否应该就此关闭? stackoverflow.com/questions/45292479/…
-
@cᴏʟᴅsᴘᴇᴇᴅ 我不这么认为。该 Q+A 专门针对在 except 块中捕获的异常,并且仅在 python-3.x 中。
-
@cᴏʟᴅsᴘᴇᴇᴅ 不,不。问题之间存在细微差别。我链接到的骗子问为什么要声明一个全局名称,然后在
except as <name>中使用该名称,当后来使用该名称时会引发NameErrror。肯定有相关的,但不完全是骗局。
标签: python python-2.7 exception-handling scope