Sch*_*nge 0 python optimization
我有这个代码,想缩短它.这有可能吗?拥有通常相同的代码并没有多大意义:
try:
years = values['year']
except KeyError:
pass
try:
tracks = values['track']
except KeyError:
pass
try:
statuses = values['status']
except KeyError:
pass
Run Code Online (Sandbox Code Playgroud)
Bas*_*sic 10
如何完全避免异常?
.get() 如果密钥不存在,则允许您提供默认值...
years = values.get('year') # Implicitly default to None
tracks = values.get('track', None) # Explicitly default to None
statuses = values.get('status', 'Unknown') # Or use any custom value
Run Code Online (Sandbox Code Playgroud)
正如@DSM的评论中所提到的,这与您的代码的不同之处在于它保证所有变量都将绑定一些值.否则,尝试使用任何变量可能会导致NameError运行时.
效率较低,但您也可以明确检查密钥是否存在...
if 'year' in values:
# do something
Run Code Online (Sandbox Code Playgroud)