如何在函数之前定义一个全局变量,然后在python中的函数中引用它?
我只是用一台图灵机器使自己家喻户晓。我正在制作一个半精确的虚拟图灵机,但我遇到了一个看似简单的问题,我只知道有一个解决方案。我在网上进行了研究,但没有找到任何能满足我的问题的东西 如何使变量“l”在函数中可调用。它必须是可调用的,因为如果我在函数中定义变量的初始值,当函数循环时,它会将值重置为0 这是我的密码:如何在函数之前定义一个全局变量,然后在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
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