如何在函数之前定义一个全局变量,然后在python中的函数中引用它?

如何在函数之前定义一个全局变量,然后在python中的函数中引用它?,python,global,turing-machines,Python,Global,Turing Machines,我只是用一台图灵机器使自己家喻户晓。我正在制作一个半精确的虚拟图灵机,但我遇到了一个看似简单的问题,我只知道有一个解决方案。我在网上进行了研究,但没有找到任何能满足我的问题的东西 如何使变量“l”在函数中可调用。它必须是可调用的,因为如果我在函数中定义变量的初始值,当函数循环时,它会将值重置为0 这是我的密码: blanktape = [] for x in range(1,251): x = ' ' blanktape.append(x) global l l = 1 non

我只是用一台图灵机器使自己家喻户晓。我正在制作一个半精确的虚拟图灵机,但我遇到了一个看似简单的问题,我只知道有一个解决方案。我在网上进行了研究,但没有找到任何能满足我的问题的东西

如何使变量“l”在函数中可调用。它必须是可调用的,因为如果我在函数中定义变量的初始值,当函数循环时,它会将值重置为0

这是我的密码:

blanktape = []
for x in range(1,251):
    x = ' '
    blanktape.append(x)

global l
l = 1
non = ' '
head = blanktape[l]
symbols = [3, 'ee', 'x']

def mconfigb():
    if head == non:
        blanktape[blanktape.index(head)] = 0
        l = l + 2

def mconfigc():
    if head == non:
        blanktape[blanktape.index(head)] = 1
        l = l + 2

def turingmachine():
        while l < len(blanktape) + 1:
            mconfigb()
            mconfigc()
        return blanktape

print turingmachine()
blanktape=[]
对于范围(1251)内的x:
x=''
blanktape.append(x)
全局l
l=1
非=“”
磁头=空白磁带[l]
符号=[3,'ee','x']
def mconfigb():
如果head==非:
空白磁带[空白磁带索引(磁头)]=0
l=l+2
def mconfigc():
如果head==非:
空白磁带[空白磁带索引(磁头)]=1
l=l+2
def turingmachine():
当l
必须为每个函数声明它们。但是,我认为您应该将所有创建内容包装到turingmachine类中,并使用实例变量。

您需要:

global l
在函数本身中(您可能需要重新考虑变量命名约定,
l
不是一个好名字)

例如:

xyzzy = 1

def fn():
    global xyzzy
    xyzzy = xyzzy + 1

其他函数也可以这样做。

我会在下面的答案中重复评论,但我同意它们。首先,这是使用类的绝佳机会。第二,一个字母的变量往往很难处理。不要害怕使用较长的名称,如head_location或类似的名称。
xyzzy = 1

def fn():
    global xyzzy
    xyzzy = xyzzy + 1
def mconfigb():
     global l