的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没有返回从功能

+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

您需要了解局部变量是如何在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() 

函数的参数被分配通过。在python中进行赋值时,将为不可变类型创建一个新对象,而新名称将作为对可变类型的同一对象的另一个引用。

这意味着将整型变量传递给calc函数将复制对象并将副本绑定到本地名称,因为内置整数是不可变的。这与在可变类型的情况下将会发生的情况形成对比,其中名称将是对原始对象的引用。