Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在函数中创建的变量是否具有全局作用域?_Python_Scope - Fatal编程技术网

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

我有一个简单的函数,其中包含一个循环,可以计算每年的利息增长情况,这让我想到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.25
year 3: $115.76
year 4: $121.55
我知道它是有效的,但通常我会在for循环上方创建'amount'变量,以确保在每次迭代之后,该变量都会得到更新。因为我这次没有这么做,所以我假设这个变量是全局创建的,所以这会自动发生


我的假设正确吗?谢谢

如果它是全局的,那么您可以在功能之外访问它。变量的范围仅限于该特定函数


您还可以在循环上方创建另一个中间变量,但它不会对函数有太大的更改-您不需要函数中的原始值
amount
,因此出于您的目的-使用该变量并直接在循环中更新它是可以的。

如果它是全局变量,则您可以在循环外部访问它功能。变量的范围仅限于该特定函数


您也可以在循环上方创建另一个中间变量,但它不会对函数有太大的改变-您不需要函数中的原始值
amount
,因此出于您的目的-使用该变量并直接在循环中更新它是可以的。

上面的答案已经满足了您的要求,但是我认为下面的链接可能对你的学习有好处,因为它对我的学习也有好处。在中,您可以将您的代码和可视化发生在全局范围内的事情,函数的范围等。希望这能帮助您

上面的答案已经满足了您的要求,但我认为下面的链接可能对您的学习有好处,因为它对我的学习也有好处。在中,您可以将您的代码和可视化发生在全局范围内的事情,函数的范围等。希望这能帮助您

它不是全局的(
print(amount)
在调用
invest
后将不起作用),但它是由函数声明在函数级别创建的。参数不是全局的。初始值从函数参数开始。对变量及其作用域上下文进行了详细解释,并提供了示例。请在循环之前尝试
print(locals())
。它不是全局的(
print(amount)
在调用
invest
后不起作用),但它是在函数级别通过函数声明创建的。参数不是全局的。初始值从函数参数开始。有关于变量及其作用域上下文的详细解释,请在循环之前尝试
print(locals())