2014-10-26 92 views
-3
def main(): 
    sss = 0 
    oa = 0 
    calc (sss ,oa) 
    print ("value = ",sss ,oa) 

def calc (sss ,oa): 
    sss = sss + 1 
    oa = oa + 1 
main() 

值爲什麼打印打印( 「值=」,SSS,OA)0 0而不是1 1的Python沒有返回從功能

+0

你正在通過calc改變這個值,但是你在calc中增加的值(sss)是一個局部變量,你沒有對你試圖在main()中增加的值做任何事情。我建議你[閱讀此](http://www.python-course.eu/global_vs_local_variables.php) – gudthing 2014-10-26 22:46:36

+0

http://repl.it/2Zr – 2014-10-26 22:49:17

回答

0

您需要了解局部變量是如何在Python工作。您正在獲得0,0,因爲在def calc (sss, oa)中,您正在修改本地sssoa,而不是您在main中傳遞給print的變量sssoa

有很多可能的方法來實現你的任務。然而,試試你的代碼的這個修改後的版本,返回局部變量:在Python

def main(): 
    sss = 0 
    oa = 0 
    sss, oa = calc (sss ,oa) 
    print ("value = ",sss ,oa) 

def calc (sss ,oa): 
    sss = sss + 1 
    oa = oa + 1 
    return sss, oa 
main() 
0

函數的參數被分配通過。在python中進行賦值時,將爲不可變類型創建一個新對象,而新名稱將作爲對可變類型的同一對象的另一個引用。

這意味着將整型變量傳遞給calc函數將複製對象並將副本綁定到本地名稱,因爲內置整數是不可變的。這與在可變類型的情況下將會發生的情況形成對比,其中名稱將是對原始對象的引用。