从具有相同名称的内部函数访问全局函数
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 的多个原则,例如 “显式优于隐式”、”可读性很重要,“如果实现很难解释,那就不是个好主意”。
我有以下代码:
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 的多个原则,例如 “显式优于隐式”、”可读性很重要,“如果实现很难解释,那就不是个好主意”。