📜  如果函数之前的函数是全局的,那么函数内部的函数是否可以是全局的 - Python (1)

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

如果函数之前的函数是全局的,那么函数内部的函数是否可以是全局的 - Python

在 Python 中,函数可以嵌套在另一个函数中,这样内部函数就可以访问外部函数的变量和参数。但是,当我们在这样的内部函数中定义另一个函数时,它只能在该内部函数中使用,而不能在外部函数和全局作用域中使用。

换句话说,如果函数之前的函数是全局的,函数内部的函数仍然是局部的。

例如,考虑下面的代码:

def outer():
    def inner():
        print("Hello from inner!")
    
    print("Hello from outer!")
    inner()

outer()

运行这段代码将会输出:

Hello from outer!
Hello from inner!

我们可以看到,内部函数 inner() 可以访问外部函数 outer() 的变量和参数,但是我们不能在外部函数或全局作用域中使用 inner()

如果我们尝试在外部函数或全局作用域中调用 inner(),将会出现 NameError

def outer():
    def inner():
        print("Hello from inner!")
    
    print("Hello from outer!")
    inner()

outer()
inner()  # NameError: name 'inner' is not defined

因此,我们可以得出结论,在 Python 中,无论函数是否全局,内部函数都是局部的。