Python没有从函数返回值

时间:2014-10-26 22:40:47

标签: python function

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

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

为什么打印(“value =”,sss,oa)0 0而不是1 1

2 个答案:

答案 0 :(得分:0)

您需要了解局部变量在python中的工作方式。您收到0,0,因为在def calc (sss, oa)您正在修改本地sssoa,而不是您正在修改的sssoa变量到print中的main

有许多可能的方法来完成您的任务。但是,请尝试使用此代码的修改版本返回本地变量:

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()

答案 1 :(得分:0)

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

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