python – 尝试/除了块声明多个值

我正在尝试编写一个try / except块,它声明了两个通过ConfigParser检索其值的变量.我遇到的问题是,声明的一个或两个值可能不存在于特定部分下,并且在这种情况下应该设置为None.我知道我可以简单地将值添加到每个配置文件中,但是,并非所有配置在部分名称中都是一致的,这变成了一项非常繁琐的任务.

有没有更好的方法来实现以下try / except块而不将它们分成两个独立的块?

try:
    ports = getCfgStr(sectName, 'ports')
    terminal = getCfgStr(sectName, 'terminals')
except KeyError:
    # Need to set ports or terminal to None depending on which raised the KeyError

我的解决方案:

try:
    ports = getCfgStr(sectName, 'ports')
except KeyError:
    ports = None

try:
    terminals = getCfgStr(sectName, 'terminals')
except KeyError:
    terminals = None

最佳答案 有趣的问题!

这个怎么样:

def lookup(param):
    try:
        return getCfgStr(sectName, param)
    except KeyError:
        return None

ports = lookup('ports')
terminal = lookup('terminals')
点赞