为什么 Python 可以访问在函数外定义的函数中的变量

Why Python can access variable in function which was defined outside of function

为什么 Python 可以访问在函数外定义的函数中的变量。 这个 mysterious_var 是在外部定义的,但是 Python 如何在函数中访问它?

 def show_truth():
        print(mysterious_var)
        
 mysterious_var = 'Surprise!'
        
 show_truth()

您需要了解python中控制流的概念。所以让我们以您的代码为例。

所以控制流程应该是这样的。

1 -> 第一行(定义函数并将其引用存储在 RAM 中) 请记住,控制流目前不会进入函数,因为第 1 行中的函数刚刚定义,尚未被调用。

2 -> 行号 3(分配变量)

3 -> 行号 4(调用函数)

4 -> Line number 1 again(它将移动到你调用函数时的第 1 行)

5 -> 函数内的代码。

现在,如果您意识到变量已经在步骤 3 中定义和赋值。那么您的函数中的代码可以识别该变量并且不会产生任何错误。