导入文件中使用变量会导致NameError,尽管使用了'global'。

2024-10-05 17:57:32 发布

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

我正在设计一个程序,模拟一个图灵机,与规则在一个单独的文件,以便于编辑。不幸的是,当它第一次尝试从ruleTable计算时,它抛出了一个NameError。你知道吗

令人不快的片段:

import TheRules

def turIt():
    global ruleTable #Global has been used here.
    tapeSegment = tape[tapePos]
    for x in range(0,len(ruleTable)): #Error here.
        if ruleTable[x][2] == machineState and ruleTable[x][3] == tape[tapePos]:
            machineState = ruleTable[x][4]
            tape[tapePos] = ruleTable[x][5]
            move(ruleTable[x][6])

规则:

ruleTable = [1]
ruleTable[0] = ("startRule","anyVal","anyVal","1","1",1)
#New rules go down here:

准确地说:“NameError:未定义全局名称‘ruleTable’”

处理这个问题最简单的方法是什么?我完全被它弄糊涂了。你知道吗


Tags: 文件import程序编辑here规则deftape
1条回答
网友
1楼 · 发布于 2024-10-05 17:57:32

import TheRules只将TheRules模块加载到本地namesapce,而不是其内容(变量、函数等)。你知道吗

使用from TheRules import ruleTableruleTable加载到本地命名空间。你知道吗

或者使用TheRules.ruleTable访问变量

相关问题 更多 >