错误:“function”对象不是subscriptab

2024-04-25 06:10:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在执行python任务,但是当我想测试上面的情况时出现了一个错误。在

这是我的代码:

def evalTerm(env, t):
    if type(t) == Node:
        for label in t:
            children = t[label]
            if label == 'Number':
                t = children[0]
                return t

            elif label == 'Add':
                t1 = children[0]
                v1 = evalTerm(env, t1)
                t2 = children[1]
                v2 = evalTerm(env, t2)
                return v1 + v2

            elif label == 'Multiply':
                t1 = children[0]
                v1 = evalTerm(env, t1)
                t2 = children[1]
                v2 = evalTerm(env, t2)
                return v1 * v2


            elif label == 'Variable':
                x = children[0]
                if x in env:
                    return env[x]
                else:
                    print(x + " is unbound")
                    exit()

            elif label == 'Int':
                f = children[0]

                v = evalTerm[env, f]
                if v == 'True':
                    return 1
                elif v == 'False':
                    return 0

            elif label == 'Parens':
                x = children[0]
                v = evalTerm(env, x)
                return v

    elif type(f) == Leaf:
        if f == 'True':
            return 'True'
        if f == 'False':
            return 'False'

当我使用以下方法进行测试时:

^{pr2}$

它给出一个错误:

'function' object is not subscriptable

我怎么能修好它?在


Tags: envfalsetruereturniftype错误label
1条回答
网友
1楼 · 发布于 2024-04-25 06:10:52

没有完整的回溯是不可能确定的,但最有可能的是你的问题:

v = evalTerm[env, f]

evalTerm是一个需要调用的递归函数(请注意附加的()而不是{}):

^{pr2}$

Python中的方括号[ ]用于subscription或索引-这意味着,例如,通过关键字为dictionary中的值寻址,或通过索引为list中的项寻址。在

如果您得到异常'foo' object is not subscriptable,这意味着您试图对不支持它的'foo'类型的对象使用订阅。在

相关问题 更多 >