我一直在读一本Python教科书,我看到以下代码:
class Database:
# the database implementation
pass
database = None
def initialize_database():
global database
database = Database()
现在,为什么initialize_database
函数内部有一个global
声明?我们已经在函数之外定义了database
,它不是已经使它全局了吗?
此致敬意
当全局未在函数中声明为全局时,您可以引用全局,但只能读取它;编写它将创建一个隐藏全局变量的新局部变量。global
声明使其能够写入全局。
'global x' 不会使 x 全局,它应该被理解为"从现在开始,在这个命名空间中,将所有对 x 的引用视为对更高命名空间中 x 的引用。
请记住,你不会永久地对x做任何事情,你只是让x指向函数中的不同东西。