Local/global范围

Local/global scope

我在测试中没有通过这道题,我想知道是否有人可以帮助我理解原因。 问题:哪些名称出现在本地范围内?

a = 3
b = 6

def f(a):
    c = a + b
    return c

我回答了a,b,c,但显然只有a和c。为什么 b 不在本地范围内 'occurring'?

存在 ab 的全局实例,因为它们是在文件级别分配的。

在函数 f 中,有一个参数 a 使 a 的实例成为本地实例(并且独立于 a 的全局实例)。 bf 中被引用,但未被赋值,因此 b 引用 b 的全局实例。 c 被赋值给 f,所以 c 是本地的。

所以 fac 的本地实例。

让我为你说清楚。当您在函数上方声明 'a' 和 'b' 时,它们被视为全局变量,因为它们可以在任何函数中使用('a' 在函数 'f' 中使用)和 'c' 是在函数 'f' 内部定义的,所以它显然是一个局部变量,但 'b' 不是局部变量,因为它既没有被传递给函数也没有被定义,它的值被使用在上面 'c'(这里 'b' 作为全局变量)。如果你的函数只有 'f()' 而 'a' 没有传入那么你的答案将是 'c'(局部变量)。希望它清除