关于这两个选项:
try:
userid = get_userid()
except:
userid = ""
对比
userid = ""
try:
userid = get_userid()
except:
pass
是否有任何区别,特别是想知道如果 userid
仅在 try
block 中设置,命名空间将如何工作?它们是否具有相同的命名空间范围?
一个比另一个更受欢迎吗?
最佳答案
像 try
和 except
这样的 block (还有 if
、elif
、else
, with
) 没有“本地作用域”。但是你不能也不应该期望 try
block 中的任何代码都会被执行(因为它可能会失败并直接进入 except
或 finally
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/