📜  在函数中赋值之前引用的 python - Python (1)

📅  最后修改于: 2023-12-03 15:07:58.059000             🧑  作者: Mango

在函数中赋值之前引用的Python

在Python中,如果在函数中尝试访问一个尚未被定义的变量,将引发 NameError 异常。但是,如果在函数中尝试访问尚未赋值的变量,则不会引发异常,因为Python将其视为一个未初始化的变量。

这些是由于Python作用域规则的结果。请注意,在Python中,函数可以访问它们之外的变量,但是如果尝试在函数中为其分配一个值,则会创建一个本地变量。这意味着在函数中访问一个外部定义的变量,并在函数中尝试为其分配一个值将导致一个具有相同名称的本地变量被创建。

以下示例说明了在函数中如何引用一些未赋值的变量:

def func():
    print(x)

x = 5
func()

输出结果是:

5

这是因为Python寻找变量时按照以下顺序操作:

  • 寻找本地变量(在当前函数中定义)
  • 寻找父级函数的变量(在当前函数外包含但在其父级函数中定义)
  • 寻找全局变量(在模块级别定义)
  • 寻找内置变量(在Python内置命名空间中定义)

如果在具有相同名称的本地变量的情况下使用外部定义的变量,则需要通过global关键字声明该变量的全局性。以下示例说明如何使用global关键字声明全局变量:

def func():
    global x
    print(x)
    x = 10

func()
print(x)

输出结果是:

5
10

在上面的示例中,我们在函数中声明x变量是全局的,并在函数中访问x变量,它与外部定义的相同。此外,我们还在函数中为该变量分配了一个新值,并在函数外部访问它,这将输出新值。