Neo*_*Neo 2 python if-statement try-catch
我遇到的代码我不知何故发现"奇怪".
var = None
try:
var = mydict[a][b]
except:
pass
Run Code Online (Sandbox Code Playgroud)
我不太习惯使用try-except检查dict键,显然有一个if-else序列来处理相同的情况.
var = None
if a in mydict:
if b in mydict[a]:
var = mydict[a][b]
Run Code Online (Sandbox Code Playgroud)
使用一种方法比另一种方法有任何"明显的"优势/劣势吗?
异常处理通常比if语句慢得多.由于存在嵌套字典,因此很容易理解作者使用异常语句的原因.但是,以下也可以.
var = mydict.get(a,{}).get(b,None)
if var is None:
print("Not found")
else:
print("Found: " + str(var))
Run Code Online (Sandbox Code Playgroud)
当键不存在时get,dict对象的使用返回默认值.