全局对象应该由函数直接访问还是通过函数参数传递?

Should a global object be accessed by a function directly or passed through the function argument?

Python 应使用以下哪个版本?

直接访问全局对象mylist的地方:

def foo1():
    mylist.append(1)
  
def foo2():
    mylist.append(2)
    
mylist = [0]

foo1()
foo2()

print(mylist)

或者全局对象 mylist 传递给函数参数的地方:

def foo1(x):
    x.append(1)
  
def foo2(x):
    x.append(2)
    
mylist = [0]

foo1(mylist)
foo2(mylist)

print(mylist)

两者return相同的输出:

[0, 1, 2]

两者有什么区别,我应该使用哪个版本?

编辑: 给出一些真实世界的上下文:mylist 在我的项目中是一个 turtle.Turtle() 实例,foo1foo2 是两个函数,每个函数都在同一个海龟实例上绘制一些东西。

由你决定。

这里真正的答案是 myList 可能 不需要是全局的。它应该是本地的,然后应该传递给函数。

如果它是一个 class 变量,您可以执行任一操作。我会做任何一个在记录自己方面做得最好的人。