的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