我读过关于python中C-like switch
的习语可以表示为字典,大多数示例使用单个函数和break语句。在我的例子中,我有以下if
if method == 'c3':
Deh = buildD4(I)
Dhe = buildD343(I-1)
elif method == 'c4':
Deh = buildD4(I);
Dhe = buildD4(I-1)
elif method == 'c5':
Deh = buildD343(I)
Dhe = buildD343(I-1)
elif method == 'e2':
Deh = buildAE4(I)
Dhe = buildAH4(I)
elif method == 'y2':
Deh = buildD2(I)
Dhe = buildD2(I-1)
dt=dx
我重写为:
eh = {
'c3': buildD4(I),
'c4': buildD4(I),
'c5': buildD343(I),
'e2': buildAE4(I),
'y2': buildD2(I),
}
Deh = eh[method]
he = {
'c3': buildD343(I-1),
'c4': buildD4(I-1),
'c5': buildD343(I-1),
'e2': buildAH4(I),
'y2': buildD2(I-1),
}
Dhe = he[method]
if method == y2:
dt=dx
我的问题是:
Deh
或Dhe
时才对它们进行计算李>1.1如果没有。我怎样才能做到这一点
if/elif
是最好的结构李>PS:所有这些build*
函数都返回一个给定参数大小的方阵I
是整数,dt
和dx
是浮点数,method
是字符串
不,必须首先构造字典,这意味着必须计算所有键和值。但是,可以将函数存储为值:
1.1您可以这样做:
unevaluated = lambda: do_stuff()
。现在,do_stuff
只会在调用unevaluated()
时被调用,但这看起来有点难看使用包含单个函数的词典可能是一种方法
相关问题 更多 >
编程相关推荐