2011-03-14 148 views

回答

9

局部變量,那麼,當地的功能範圍。當函數沒有被執行時,它們甚至不存在,所以沒有任何可訪問的東西。

如果您希望變量有一個更大的範圍,那麼,只要給它一個更大的範圍:

def blue(self): 
    self.var = "This is blue" 

def red(self): 
    print self.var 
2

只有一個方法,在同一時間運行(在簡單的情況下,這是默認和在大多數語言中最常見),並且因爲局部變量只在函數運行時才存在,即在函數被調用時創建並在返回時被銷燬,在執行red期間不存在這樣的局部變量。

現在,當您添加併發性,它可能是red,並在同一時間運行blue(但通常,你永遠不知道你也不應該關心)。但var仍然是本地變量blue,所以即使有一些赫克得到它的價值,這樣做將是完全瘋狂的,並且是對良好做法的犯罪。通過全局變量在線程之間共享狀態足以產生一個陷阱,不需要在混合中拋出當地人。

你在做什麼真的試圖做什麼?你可以提出一個實例變量(self.var = ...)或者return來自blue

+0

我在考慮使用現有的變量,節省了編碼時間。我可以解決這個問題,但只是想在可能的情況下嘗試在我發佈的初始代碼中做什麼。 – user652124 2011-03-14 17:49:31

1

函數/方法中的局部變量不能在該函數/方法外訪問。要在方法之間共享狀態,請使用實例變量。

class Colors(): 

    def blue(self): 
     self.var = "This is blue" 

    def red(self): 
     print self.var 
1

你有幾個意想不到的事情會在這裏:

1)要指定b鍵self.blue,這是一個函數指針爲藍色。

2)你有一個範圍的問題,你想下面

def blue(self): 
    self.var = "This is blue" 

def red(self): 
    print self.var 

或者,如果你要打印的東西,藍色返回你做:

def blue(self): 
    return "This is blue" 

def red(self): 
    print blue() 
0

謝謝你們。我解決了這個問題。在第二個方法中創建了另一個具有相同值的局部變量。

+0

請考慮接受最有幫助的答案(點擊答案中的綠色複選標記)。這向所有人表明這是您選擇的解決方案。 – 2011-03-14 22:28:57

相關問題