Python中的全局变量

3 投票
2 回答
772 浏览
提问于 2025-04-16 17:12

我最近在看一本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声明,你就可以直接修改这个全局变量了。

撰写回答