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
答案 0 :(得分:0)
您需要了解局部变量在python中的工作方式。您收到0,0
,因为在def calc (sss, oa)
您正在修改本地sss
和oa
,而不是您正在修改的sss
和oa
变量到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函数会复制对象并将副本绑定到本地名称,因为内置整数是不可变的。这与可变类型的情况形成对比,其中名称将是对原始对象的引用。