我正在设计一个模拟图灵机的程序,将规则放在一个单独的文件中以便于编辑。不幸的是,当它第一次尝试从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:
准确地说:"名称错误:未定义全局名称‘ruleTable’"
处理这个问题最简单的方法是什么?我完全被它弄糊涂了。
import TheRules
只将TheRules
模块加载到本地名称空间,而不加载其内容(变量、函数…)。
使用from TheRules import ruleTable
将ruleTable
加载到本地命名空间。
或者使用TheRules.ruleTable
访问变量