Python 风格:更简洁的方式重命名变量并检查其不为 null
在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 个回答
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']
3
正确的方法:
name = data.get('name')
if name:
# your code for name here
0
这是一种可以用一行代码实现的方法。不过我建议你还是继续用你现在的方式,这样更容易读懂:
for name in (data['name'],) if data['name'] else ():
print name
你可以在for循环中使用else,这样它的运行方式和if语句是一样的。不过这样写看起来有点奇怪,不如直接用if来得简单明了。