在Python中将列表定义为全局变量
我正在使用列表,其中列出了我的程序中的某些功能。这实际上是一个共享列表,我的所有功能都可以对其进行编辑。在所有功能中是否真的有必要将其定义为“全局”?
我的意思是在使用它的每个函数中放置global关键字,还是在所有函数之外定义它就足够了,而无需在其定义后面使用global字?
回答:
分配变量(x = ...
)时,将在当前作用域(例如,当前函数的本地范围)中创建一个变量。如果它恰好在外部(例如全局)范围内隐藏了变量,那就太糟糕了-
Python不在乎(这是一件好事)。所以你不能这样做:
x = 0def f():
x = 1
f()
print x #=>0
并期待1
。相反,您需要声明您打算使用global x
:
x = 0def f():
global x
x = 1
f()
print x #=>1
但是请注意,变量的分配与方法调用有很大不同。您始终可以在范围内的任何对象上调用方法,例如,对来自外部(例如,全局)范围的变量进行调用,因为没有局部阴影可以覆盖它们。
同样 非常 重要:成员分配(x.name = ...
),项目分配(collection[key] =
...),切片分配(sliceable[start:end] =
...)以及更多的方法调用同样都是方法!因此,您无需global
更改全局成员或调用它的方法(即使当它们使对象发生突变时)。
以上是 在Python中将列表定义为全局变量 的全部内容, 来源链接: utcz.com/qa/434766.html