Python 在函数中创建的变量是否具有全局作用域?
我有一个简单的函数,其中包含一个循环,可以计算每年的利息增长情况,这让我想到Python中的范围和变量Python 在函数中创建的变量是否具有全局作用域?,python,scope,Python,Scope,我有一个简单的函数,其中包含一个循环,可以计算每年的利息增长情况,这让我想到Python中的范围和变量 def invest(amount, rate, years): for i in range(years): amount = amount + amount*rate print(f"year {i+1}: ${amount:.2f}") invest(100, 0.05, 4) 输出: year 1: $105.00 year 2: $110
def invest(amount, rate, years):
for i in range(years):
amount = amount + amount*rate
print(f"year {i+1}: ${amount:.2f}")
invest(100, 0.05, 4)
输出:
year 1: $105.00
year 2: $110.25
year 3: $115.76
year 4: $121.55
我知道它是有效的,但通常我会在for循环上方创建'amount'变量,以确保在每次迭代之后,该变量都会得到更新。因为我这次没有这么做,所以我假设这个变量是全局创建的,所以这会自动发生
我的假设正确吗?谢谢如果它是全局的,那么您可以在功能之外访问它。变量的范围仅限于该特定函数
您还可以在循环上方创建另一个中间变量,但它不会对函数有太大的更改-您不需要函数中的原始值
amount
,因此出于您的目的-使用该变量并直接在循环中更新它是可以的。如果它是全局变量,则您可以在循环外部访问它功能。变量的范围仅限于该特定函数
您也可以在循环上方创建另一个中间变量,但它不会对函数有太大的改变-您不需要函数中的原始值
amount
,因此出于您的目的-使用该变量并直接在循环中更新它是可以的。上面的答案已经满足了您的要求,但是我认为下面的链接可能对你的学习有好处,因为它对我的学习也有好处。在中,您可以将您的代码和可视化发生在全局范围内的事情,函数的范围等。希望这能帮助您 上面的答案已经满足了您的要求,但我认为下面的链接可能对您的学习有好处,因为它对我的学习也有好处。在中,您可以将您的代码和可视化发生在全局范围内的事情,函数的范围等。希望这能帮助您 它不是全局的(print(amount)
在调用invest
后将不起作用),但它是由函数声明在函数级别创建的。参数不是全局的。初始值从函数参数开始。对变量及其作用域上下文进行了详细解释,并提供了示例。请在循环之前尝试print(locals())
。它不是全局的(print(amount)
在调用invest
后不起作用),但它是在函数级别通过函数声明创建的。参数不是全局的。初始值从函数参数开始。有关于变量及其作用域上下文的详细解释,请在循环之前尝试print(locals())
。