Python 风格:更简洁的方式重命名变量并检查其不为 null

1 投票
4 回答
3056 浏览
提问于 2025-04-17 08:23

在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来得简单明了。

撰写回答