python - try block 中变量的命名空间范围

标签 python python-2.7 exception scope

关于这两个选项:

try:
    userid = get_userid()
except:
    userid = ""

对比

userid = ""
try:
    userid = get_userid()
except:
    pass

是否有任何区别,特别是想知道如果 userid 仅在 try block 中设置,命名空间将如何工作?它们是否具有相同的命名空间范围?

一个比另一个更受欢迎吗?

最佳答案

tryexcept 这样的 block (还有 ifelifelse, with) 没有“本地作用域”。但是你不能也不应该期望 try block 中的任何代码都会被执行(因为它可能会失败并直接进入 exceptfinally block )。

但是您确定 "" as "failing"user_id 有意义吗?为什么不是别的东西,例如 None

另外你应该避免捕获所有异常,所以我更喜欢这样的东西:

try:
    userid = get_userid()
except Exception:  # or a more specific exception
    userid = None

关于python - try block 中变量的命名空间范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45945609/

相关文章:

python - 不在网络抓取中迭代列表

python - 保持打开一个cmd窗口

Python SSL 错误握手

python - 检查是否安装了python 3的问题

python-2.7 - 使用 Sphinx autodoc 记录 Flask 应用程序

Python-将字符串与列表中的随机项目进行比较

python - Python 字典中的 "<"是什么意思?

java - 重分类异常(exception)是好的做法吗?

matlab - Matlab 中的异常与错误

android - 使用 UncaughtExceptionHandler 执行 Android 通常执行的操作以及我需要的额外功能