Python不从函数返回值

Python不从函数返回值,python,function,Python,Function,为什么print print value=、sss、oa为0而不是1您需要了解python中局部变量的工作方式。您得到的是0,0,因为在def calc sss中,oa修改的是本地sss和oa,而不是传递到main中打印的sss和oa变量 有很多可能的方法来完成你的任务。但是,请尝试此返回局部变量的代码修改版本: def main(): sss = 0 oa = 0 calc (sss ,oa) print ("value = ",sss ,oa) def ca

为什么print print value=、sss、oa为0而不是1

您需要了解python中局部变量的工作方式。您得到的是0,0,因为在def calc sss中,oa修改的是本地sss和oa,而不是传递到main中打印的sss和oa变量

有很多可能的方法来完成你的任务。但是,请尝试此返回局部变量的代码修改版本:

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

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

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


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

您正在通过calc更改值,但在calc中递增的值sss是一个局部变量,您没有对尝试在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()