2016-02-02 47 views
-3

簡單的Python代碼更改值的功能,但不能把它們打印功能之外

def m(x,y): 
    x=2 
    y=[3,5] 

a=1 
b=[0,26] 
print m(a,b) 

我想改變的參數,如果能夠不return.When我跑我的代碼

python d1.py 
None 

爲什麼? 有了回報

def m(x,y): 
    x=2 
    y=[3,5] 
    return x,y 

a=1 
b=[0,26] 
print m(a,b) 

(2, [3, 5]) 

我要的是A和B印刷。

+0

你要什麼它打印? –

+2

你的問題,特別是標題,很不明確,但你可能想'm()'''返回一些東西。 –

+0

由於所有函數都隱式返回'None',並且已經從函數打印了返回值? –

回答

2

我假設你想達到的是pass your arguments by reference,以便它們被函數改變。

你無法實現將immutable參數(如數字)傳遞到函數中。要處理這個問題,請看official docs。爲了清楚我強烈建議使用的解決方案1,儘管它採用了return聲明:

def m(x,y): 
    x = 2 
    y = [3,5] 
    return x,y 

a = 1 
b = [0,26] 
a,b = m(a,b) 
print a,b 

實現這一「無return」可以使用文檔中給出了另一種解決方案。從我所想說的解決方案3是優選的,雖然它是更清晰和簡單的解決方案相比1.你傳遞一個mutable參數的功能,就像一個list

def m(x): 
    x[0] = 2 
    x[1] = [3,5] 

a = [1, [0,26]] 
m(a) 
print a