Python全局列表

Python全局列表,python,list,globals,Python,List,Globals,我正在学习python,但在全局变量/列表方面遇到了问题。我正在编写河内塔的基本手册程序,以下是目前的程序: pilar1 = [5,4,3,2,1,0] pilar2 = [0,0,0,0,0,0] pilar3 = [0,0,0,0,0,0] def tower_of_hanoi(): global pillar1 global pillar2 global pillar3 print_info() def print_info(): glo

我正在学习python,但在全局变量/列表方面遇到了问题。我正在编写河内塔的基本手册程序,以下是目前的程序:

pilar1 = [5,4,3,2,1,0]
pilar2 = [0,0,0,0,0,0]
pilar3 = [0,0,0,0,0,0]

def tower_of_hanoi():

    global pillar1
    global pillar2
    global pillar3

    print_info()

def print_info():

    global pillar1
    global pillar2
    global pillar3

    for i in range(4,-1,-1):
        print(pillar1[i], " ", pillar2[i], " ", pillar3[i])
我尝试了一些变体,但每次都出现错误“NameError:global name'pillar1'未定义”


在此设置中,处理全局列表的最佳方式是什么?如果可能的话,我宁愿只使用一个源文件。谢谢

这是因为您“声明”它为
pilar1
,而不是
pillar1
您遇到的问题是
pilar
pillar
不同。 修复后,您将不再需要
全局
声明:

pilar1 = [5,4,3,2,1,0]
pilar2 = [0,0,0,0,0,0]
pilar3 = [0,0,0,0,0,0]

def tower_of_hanoi():    
    print_info()

def print_info():    
    for i in range(4,-1,-1):
        print(pillar1[i], " ", pillar2[i], " ", pillar3[i])
唯一需要使用全局变量的时间是在非全局范围(如函数定义)中指定全局变量时:

# global variable, can be used anywhere within the file since it's
# declared in the global scope
my_int = 5

def init_list():
    # global variable, can be used anywhere within the file after
    # init_list gets called, since it's declared with "global" keyword
    global my_list
    my_list = [1, 2, 3]

def my_function():
    # local variable, can be used only within my_function's scope
    my_str = "hello"

    # init's global "my_list" variable here, which can then be used anywhere
    init_list()
    my_list.append(5)

my_function()
print(my_list)

但是,您不应该过多地使用全局变量,而应该使用函数参数来传递值。

这些
global
语句都不起作用。摆脱它们。请注意,全局变量通常是一个坏主意-将值传递到函数中并返回值-全局变量导致的问题比它们解决的问题还要多。定义这个变量的一个小问题意味着只有在创建新的全局变量时才出现,这不是真的,这是分配给全局的任务,需要使用
global
关键字。这是一个小错误,我甚至没有信心,但我相信你,并且已经解决了它。接得好:)啊,是的。总是简单的错误。谢谢考虑接受这个解决方案。