2016-11-09 93 views
0

我是新來的蟒蛇。這是我的問題的一個基本例子。如何從一個定義函數內重新分配一個變量的值?

spam='spam' 

def change(): 
    spam='eggs' 

change() 

print(spam) 

此代碼將打印「垃圾郵件」到控制檯。有沒有辦法使這個工作不使用返回或參數。謝謝。

+1

放'在函數全球spam',不過注意這並不總是好的做法 –

+0

我只想重申Chris_Rands警告:這種方法通常不是最好的方法。它會使你的代碼很難理解和難以維護。 –

+0

在你的函數中的變量應該留在你的函數。而反過來也是成立的,你應該總是儘量不使用全局變量(如果你的函數需要的東西,也經常是你不使用全局變量的方式) –

回答

0

添加global spamdef內爲目標的方法定義之外定義的變量,或更好的,從方法的結果分配一個新值:

spam = "spam" 
def change(): return 'eggs' 
spam = change() #spam now contains 'eggs' 

但是,如果你通過列表​​或字典,修改方法內部的價值也會影響外部價值,但這是一個不同的故事。如果你想嘗試一下,使用spam=["spam"]和方法內做spam[0] = 'eggs'。對於這種情況,在方法之外不需要全局或分配。

+1

當但這是不好的,你應該說,這(和它的最經常可能離不開它) –

+0

不幸的是,我已經更改了多個變量,這並沒有爲我工作,我需要他們來自世界各地的訪問。 –

0

,你可以做到以下幾點:

spam='spam' 

def change(): 
    global spam 
    spam='eggs' 

change() 

print(spam) 
相關問題