Python - 总结try-except语句

ust*_*etz 2 python except

我想总结一下以下代码.它应该做的是检查计算中的变量是否已分配.如果不是,那么结果将为零.因为我有数百个这样的计算,所以我不想重复尝试 - 除了每次计算.

我怎么能这样做?

a = 1
b = 2
d = 3
f = 2

try:
    ab = a + b
except:
    ab = 0

try:    
    ac = a - c
except:
    ac = 0

try:    
    bg = b / g
except:
    ac = 0
Run Code Online (Sandbox Code Playgroud)

kin*_*all 5

编写一个函数来执行此操作,使用lambda(单行函数)推迟对变量的评估,以防其中一个变量存在:

def call_with_default(func, default):
    try:
        return func()
    except NameError:   # for names that don't exist
        return default

ab = call_with_default(lambda: a+b, 0)
# etc.
Run Code Online (Sandbox Code Playgroud)

通过使用某种数据结构(例如列表或字典)来包含您的值而不是将它们存储在单个变量中,您可能会受益; 然后你可以使用循环来完成所有这些计算,而不是单独编写它们.