2017-09-26 85 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()中你會看到未修改的全局變量。

相關問題