在Python中,我经常发现自己编写了一些稍微笨拙的代码:
if data['name'] is not None:
name = data['name']
# do stuff with 'name' over many lines
# hence bothering to rename it at all!
$('#myname').text(name)...
前两行可以折叠成一个,也许都在条件语句中吗?
答案 0 :(得分:3)
在某些情况下,例如字符串名称你可以简单地做这样的事情
name = data['name'] or ''
通用方法是使用if-else简写,例如
name = data['name'] if data['name'] is not None else ''
或者如果您愿意(我更喜欢上面的一个,因为主要任务是在开始时和特殊情况下结束)
name = '' if data['name'] is None else data['name']
答案 1 :(得分:3)
你可以这样做:
try:
name = data['name']
except KeyError:
pass
使用密钥,如果它不在dict中,则会引发异常并捕获。 (参考EAFP)
或使用dict.get方法:
name = data.get("name", "")
答案 2 :(得分:3)
正确的方式:
name = data.get('name')
if name:
# your code for name here
答案 3 :(得分:0)
这是一种在一行中完成的方法。我建议坚持你已经在做的事情来提高可读性:
for name in (data['name'],) if data['name'] else ():
print name
你可以使用带有for循环的else,它会像if语句一样流动。它只是看起来很奇怪而且不像使用if。
那么直截了当