加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 另一个带函数的开关案例

发布时间:2020-12-20 12:17:41 所属栏目:Python 来源:网络整理
导读:深入研究有趣的 python语言,因此语言中没有作为构造的转换.所以使用词典是阅读学习python第一版的第一选择.所以我试过…… cases = { 2 : readt3(e,t,off,partElems,partsNodes),# to read the triangular elements 3 : readq4(e,# to read the quadrangular
深入研究有趣的 python语言,因此语言中没有作为构造的转换.所以使用词典是阅读学习python第一版的第一选择.所以我试过……

cases = { 2 : readt3(e,t,off,partElems,partsNodes),# to read the triangular elements 
          3 : readq4(e,# to read the quadrangular elements
          5 : readh8(e,# to read the hexa elements
        }      
# define functions 
def readt3( e,partsNodes,partPnt ):
    partsElems[partPnt].append(e)
    nods = t[offset: offset+3];
    for n in nods:
      partsNodes[partPnt].append(n)
    return

并得到错误“readt3未定义”,我认为我得到了这个,因为它没有在案例之前定义然后将函数定义移到上面的情况但仍然是相同的问题,但这次“e未定义”我无法理解这一点,所以e是一个函数参数,为什么我在e上得到一个与定义相关的错误?

在这种情况下,在模拟switch-case时应该在哪里放置函数定义?

解决方法

当你做这样的事情时:

...
 2 : readt3(e,partsNodes)
...

实际上你正在评估(调用)函数readt3与参数e,partsNodes我认为你想要做的是这样的事情(模仿switch case语句):

def readt3( e,partPnt ):
    partsElems[partPnt].append(e)
    nods = t[offset: offset+3];
    for n in nods:
      partsNodes[partPnt].append(n)
    return 

# And of course all your function definition should be here before the cases dict.

cases = { 2 : readt3,# to read the triangular elements 
          3 : readq4,# to read the quadrangular elements
          5 : readh8,# to read the hexa elements
        }

现在你可以给出一个像这样的案例论证来调用你的案例:

case = 2

cases[case](e,partsNodes)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读