Python样式:在检查变量时更简洁的方式重命名变量不是null

时间:2011-12-14 19:09:08

标签: python

在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)...

前两行可以折叠成一个,也许都在条件语句中吗?

4 个答案:

答案 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。

那么直截了当