2017-09-26 89 views
-1
variable= 0 

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

def display(): 
    print(variable) 

func() 
display() 

“global variable”或“variable = None”有什么区别?将变量初始化为全局变量并在Python中声明变量为None时有什么区别

+1

[在Python中使用“全局”关键字](https://stackoverflow.com/questions/4693120/use-of-global-keyword-in-python) – khelwood

+1

这些做了完全不同的事情。你试过了吗?输出是什么? –

+0

当你键入全局关键字时,它可以访问变量外函数func()的作用域,并可以改变它的值,但是当你只是输入variable = None或variable = 1时,你正在创建一个新的局部变量 – Vaibhav

回答

2

我认为主要的区别是声明全局将打开它的范围,所有的功能。 但是将它声明为None只会初始化一个未初始化的变量并创建一个新的局部变量。

1

函数内部的变量的默认范围是局部的。所以,当你分配变量=无时,你正在创建一个局部变量并且没有给它赋值。而如果你声明它是全局的,你将会修改你之前初始化的全局变量。

+0

就像苹果和桔子一样: ''variable = None'''不会导致接近''''global variable'''的任何结果,所以比较有点尴尬。 –

1

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

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

因此,在您的示例中,func()修改全局变量,即使没有全局关键字,也可以从只读模式的display()访问相同的变量。但是,如果您将None分配给没有全局关键字的func()中的变量,那么您正在创建一个新的局部变量。因此在display()中你会看到未修改的全局变量。

相关问题