【发布时间】:2011-01-13 15:09:54
【问题描述】:
深入研究有趣的 python 语言,因此语言中没有切换作为结构。所以使用字典是阅读学习python第一版的首选。所以我试了一下,
cases = { 2 : readt3(e,t,off, partElems, partsNodes), # to read the triangular elements
3 : readq4(e,t,off, partElems, partsNodes), # to read the quadrangular elements
5 : readh8(e,t,off, partElems, partsNodes), # to read the hexa elements
}
# define functions
def readt3( e, t, off, partElems, partsNodes, partPnt ):
partsElems[partPnt].append(e)
nods = t[offset: offset+3];
for n in nods:
partsNodes[partPnt].append(n)
return
并得到错误“readt3 is undefined”,我以为我得到了这个,因为它在案例之前没有定义,然后将函数定义向上移动到案例之上,但仍然是同样的问题,但这次“e 未定义”我可以不明白这个,所以e是一个函数参数,为什么我在e上得到一个定义相关的错误?
在这种情况下模拟 switch-case 时函数定义应该放在哪里?
【问题讨论】:
-
+1 以平衡 -1 投票。请在您投票-1时给出理由。这个问题对我来说似乎是一个基本的初学者问题。
-
我也想知道为什么会有-1,是的,我是python的初学者......
-
Python 缺少 switch 语句是我喜欢 python 的众多原因之一。现在您正在使用一种非常易于阅读且易于维护的策略模式。我建议您在选择的答案中使用策略模式时,使用更好的命名方式。您选择的命名看起来就像您在真正使用良好实践时不情愿地围绕 python 缺少 case 语句进行编码。
标签: python function case switch-statement