Python封闭范围:在调用点还是在定义点?

2024-04-25 20:18:22 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个封闭范围的例子(它也被称为词法范围吗?)地址:

def outer(a):
    def inner():
        return a
    return inner

if __name__ == '__main__':
    inner = outer(10)
    print(inner())

此代码也适用于:

def printer():
    print(x)

if __name__ == '__main__':
    x = 10
    printer()

我的问题是:第二个例子中是否使用了“封闭范围”规则?如果是这样,那么在调用点/运行时和定义时这两种类型的封闭作用域之间有什么区别吗?你知道吗

编辑:正如@user2357112指出的,x是全局的。这个不行:

def printer():
    print(x)

def outer(func_print):
    x = 10
    func_print()


if __name__ == '__main__':
    outer(printer)

真是个新手的错误。。。你知道吗


Tags: 代码namereturnifmain规则地址def