Python 从for循环创建的新值存储在哪里?

Python 从for循环创建的新值存储在哪里?,python,function,for-loop,python-3.x,Python,Function,For Loop,Python 3.x,我正试图了解以下函数和for循环: def invest(amount, rate, time): print ("Principal amount: ${}" .format(amount)) print ("Annual rate of return: {}" .format(rate)) for t in range(1, 9): amount = amount * (1 + rate) print ("Year {}: ${}" .

我正试图了解以下函数和for循环:

def invest(amount, rate, time):
    print ("Principal amount: ${}" .format(amount))
    print ("Annual rate of return: {}" .format(rate))
    for t in range(1, 9):
        amount = amount * (1 + rate)
        print ("Year {}: ${}" .format(t, amount))

invest(100, .05, 8)
invest(2000, 0.025, 5)
据我所知,100的数量被传递到函数中,for循环计算返回率。这会将金额的值增加到105.0。然而,我很难理解的是,这笔钱存储在哪里?它是存储在函数中还是存储在for循环中?在第二个循环中,使用了105.0的数量,但是这个数字从何而来

类似问题的第二个代码示例如下所示:

def doubles(number):    
    number = number * 2 
    return number       

my_num = 3          
for n in range(0, 3):   
    my_num = doubles(my_num)     
    print (my_num)
for循环从my_num变量中获取数字3,并将其传递给将其乘以2的函数。返回数字并在for循环中打印。在第二个循环中,它接受数字6并将其传递给函数。6的值存储在哪里?它是否更新了变量,它是保存在for循环中还是保存在函数中


谢谢

像这样的作业

amount = amount * (1 + rate)
表示以下内容:计算右侧的结果,该结果恰好涉及变量数量的值。计算完成后,结果将存储在左侧的变量中。这恰好是数量。总之,金额已根据其以前的值进行更新。新值存储在amount中,原始值被简单地覆盖

这是否在循环中并不重要

额外好处:如果你有数学背景,那么像amount=amount*(1+rate)这样的表达式看起来并不讨人喜欢,因为这种表达式在数学中毫无意义。为了解决这个问题,Python提供了一种更优雅(但完全等效)的语法:


这意味着“更新amount,方法是将其乘以右侧”。

调用函数时,python会创建一个“局部范围”(dict),这就是存储变量的地方。每次调用函数时都会重新创建此作用域。第一步是将函数参数添加到局部变量,然后在使用时添加其他变量。您可以随时
打印(locals()[“amount”])
以查看发生了什么。进入局部函数作用域后,无论条件嵌套的深度如何,变量都会进入同一作用域。此代码不断重新分配
金额
,因此每次循环时都使用新值

amount *= 1 + rate