全局对象应该由函数直接访问还是通过函数参数传递?
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()
实例,foo1
和 foo2
是两个函数,每个函数都在同一个海龟实例上绘制一些东西。
由你决定。
这里真正的答案是 myList 可能 不需要是全局的。它应该是本地的,然后应该传递给函数。
如果它是一个 class 变量,您可以执行任一操作。我会做任何一个在记录自己方面做得最好的人。
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()
实例,foo1
和 foo2
是两个函数,每个函数都在同一个海龟实例上绘制一些东西。
由你决定。
这里真正的答案是 myList 可能 不需要是全局的。它应该是本地的,然后应该传递给函数。
如果它是一个 class 变量,您可以执行任一操作。我会做任何一个在记录自己方面做得最好的人。