在Python函数中使用全局变量 if __name__ == "__main__": 的作用 在Python中如何给字典排序 在Python函数中使用全局变量 您可以在其他函数中使用全局变量,方法是global在分配给它的每个函数中将其声明为: globvar = 0 def set_globvar_to_one(): global globvar # 需要修改globvar的全局副本 globvar = 1 def print_globvar(): print(globvar) # 无需全局声明来读取globvar的值 set_globvar_to_one() print_globvar() # Prints 1 实例 假设你有一个这样的模块: # sample.py myGlobal = 5 def func1(): myGlobal = 42 def func2(): print myGlobal func1() func2() 你可能希望这打印42,但它打印5.如前所述,如果你添加'global'声明func1(),那么func2()将打印42。 def func1(): global myGlobal myGlobal = 42 这里发生的是Python假定在函数内的任何位置分配的任何名称都是该函数的本地名称,除非另有明确说明。如果它只是从名称读取,并且名称在本地不存在,它将尝试在任何包含范围中查找名称(例如模块的全局范围)。 myGlobal因此,当您为名称指定42时,Python会创建一个局部变量,该变量将隐藏同名的全局变量。本地超出范围并在返回时被垃圾收集func1() ; 同时,func2()除了(未修改的)全局名称之外,什么都看不到。请注意,这个命名空间决定发生在编译时,而不是在运行时 - 如果你在分配它之前读取myGlobal内部的值func1(),你会得到一个UnboundLocalError,因为Python已经确定它必须是一个局部变量但是它还没有与之相关的任何价值。但是通过使用'global'语句,你告诉Python它应该在别处查找名称,而不是在本地分配它。 if __name__ == "__main__": 的作用 在Python中如何给字典排序