在Python中将列表定义为全局变量

我正在使用列表,其中列出了我的程序中的某些功能。这实际上是一个共享列表,我的所有功能都可以对其进行编辑。在所有功能中是否真的有必要将其定义为“全局”?

我的意思是在使用它的每个函数中放置global关键字,还是在所有函数之外定义它就足够了,而无需在其定义后面使用global字?

回答:

分配变量(x = ...)时,将在当前作用域(例如,当前函数的本地范围)中创建一个变量。如果它恰好在外部(例如全局)范围内隐藏了变量,那就太糟糕了-

Python不在乎(这是一件好事)。所以你不能这样做:

x = 0

def f():

x = 1

f()

print x #=>0

并期待1。相反,您需要声明您打算使用global x

x = 0

def f():

global x

x = 1

f()

print x #=>1

但是请注意,变量的分配与方法调用有很大不同。您始终可以在范围内的任何对象上调用方法,例如,对来自外部(例如,全局)范围的变量进行调用,因为没有局部阴影可以覆盖它们。

同样 非常 重要:成员分配(x.name = ...),项目分配(collection[key] =

...),切片分配(sliceable[start:end] =

...)以及更多的方法调用同样都是方法!因此,您无需global更改全局成员或调用它的方法(即使当它们使对象发生突变时)。

以上是 在Python中将列表定义为全局变量 的全部内容, 来源链接: utcz.com/qa/434766.html

回到顶部