从具有相同名称的内部函数访问全局函数

Accessing a global function from an inner function with the same name

我有以下代码:

def A():
    return 2

def B():
    def A():
        return 3

    return A()

print(B())

结果是 3 因为 return A() 使用了 B() 的内部函数 A() 而不是函数 A()。是否可以在函数 B() 中调用函数 A()(return 2)?

您正在用自己的本地实现覆盖全局 A。您应该仍然可以使用 globals() trick 调用全局的,但请注意您正在做的事情不是好的做法:

return globals()["A"]()

更新:这不是好的做法,因为它违反了 Zen of Python 的多个原则,例如 “显式优于隐式””可读性很重要“如果实现很难解释,那就不是个好主意”