Python中的全局变量
我最近在看一本Python教材,看到了一段代码:
class Database:
# the database implementation
pass
database = None
def initialize_database():
global database
database = Database()
我想问一下,为什么在initialize_database
这个函数里要有一个global
声明呢?我们已经在函数外面定义了database
,这样不就已经是全局变量了吗?
祝好,
2 个回答
1
“global x”并不是让x变成全局变量,而是应该理解为“从现在开始,在这个命名空间里,所有对x的引用都当作是对更高层命名空间中x的引用。”
记住,你并不是在对x做什么永久性的改变,你只是让x在一个函数里指向了不同的东西。
9
在一个函数里,如果你没有声明某个变量是全局的,你还是可以使用这个全局变量,但你只能读取它的值。如果你尝试给它赋值,就会创建一个新的局部变量,这个局部变量会遮盖掉原来的全局变量。通过使用global
声明,你就可以直接修改这个全局变量了。