Python 循环中的函数导致无限循环

Python 循环中的函数导致无限循环,python,Python,我是一名编程初学者,我曾尝试过一些函数。我有两个变量(整数)和一个自建函数,该函数向变量中添加1。我想在while循环中运行函数,在这个循环中函数应该继续向变量添加1,直到其中一个变量达到一定的数字,但它以一次使用函数的循环结束。我犯了什么错 aa = 2 bb = 5 def test(aa, bb): aa = aa + 1 bb = bb + 1 return aa, bb while aa < 6: test(aa, bb) print(aa,

我是一名编程初学者,我曾尝试过一些函数。我有两个变量(整数)和一个自建函数,该函数向变量中添加1。我想在while循环中运行函数,在这个循环中函数应该继续向变量添加1,直到其中一个变量达到一定的数字,但它以一次使用函数的循环结束。我犯了什么错

aa = 2
bb = 5

def test(aa, bb):
    aa = aa + 1
    bb = bb + 1
    return aa, bb

while aa < 6:
    test(aa, bb)

print(aa, bb)
aa=2
bb=5
def测试(aa、bb):
aa=aa+1
bb=bb+1
返回aa,bb
aa<6时:
测试(aa、bb)
印刷品(aa、bb)

test()
返回的变量分配给
aa
bb

aa = 2
bb = 5

def test(aa, bb) :
    aa = aa + 1
    bb = bb + 1
    return aa, bb

while aa < 6 :
    aa, bb = test (aa, bb)  # <-- assign returned variables to aa, bb

print (aa, bb)

以防混淆源于对范围的误解:这是必要的,因为
test
中的
aa
与顶部定义的
aa
不同
aa=aa+1
正在更改参数,但这不会更改传入的数据或全局
aa
。问题是
aa
bb
作为值传递(非引用)和参数名屏蔽了全局范围定义的变量。
6 9