将变量初始化为全局变量和在Python中将变量声明为None之间的区别是什么

时间:2017-09-26 09:43:56

标签: python

variable= 0

def func():
    global variable #(or variable = None)
    variable = 1

def display():
    print(variable)  

func()
display()

"全局变量"有什么区别?或"变量=无" ?

3 个答案:

答案 0 :(得分:2)

我认为主要区别在于宣布全球将为所有职能开辟范围。 但将其声明为None只会初始化一个未初始化的变量并创建一个新的局部变量。

答案 1 :(得分:1)

函数内部变量的默认范围是本地的。因此,当您指定variable = None时,您将创建一个局部变量并为其分配none。然而,如果您将其声明为全局变量,那么您将修改之前初始化的全局变量。

答案 2 :(得分:1)

在python中,在函数外部初始化的任何全局变量都可以在函数内部访问。但是,只有在将其用作只读变量时,此访问才是自动的。

如果在函数内指定相同的名称,则会创建一个本地范围的新变量。 global关键字告诉python你不想要一个本地实例,但是想在外面修改全局变量。

因此在您的示例中,func()修改全局变量,即使没有global关键字,也可以在只读模式下从display()访问相同的变量。但是,如果在没有全局关键字的情况下为func()中的变量分配None,则表示您正在创建新的局部变量。因此,在display()中,您将看到未修改的全局变量。