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沒有返回從功能
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沒有返回從功能
您需要了解局部變量是如何在Python工作。您正在獲得0,0
,因爲在def calc (sss, oa)
中,您正在修改本地sss
和oa
,而不是您在main
中傳遞給print
的變量sss
和oa
。
有很多可能的方法來實現你的任務。然而,試試你的代碼的這個修改後的版本,返回局部變量:在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()
函數的參數被分配通過。在python中進行賦值時,將爲不可變類型創建一個新對象,而新名稱將作爲對可變類型的同一對象的另一個引用。
這意味着將整型變量傳遞給calc函數將複製對象並將副本綁定到本地名稱,因爲內置整數是不可變的。這與在可變類型的情況下將會發生的情況形成對比,其中名稱將是對原始對象的引用。
你正在通過calc改變這個值,但是你在calc中增加的值(sss)是一個局部變量,你沒有對你試圖在main()中增加的值做任何事情。我建議你[閱讀此](http://www.python-course.eu/global_vs_local_variables.php) – gudthing 2014-10-26 22:46:36
http://repl.it/2Zr – 2014-10-26 22:49:17