在Python中有几个built-in functions。以例如open
为例。我可以通过执行以下操作来启动Python控制台并获取有关open
的一些信息:
>> open
>>(built-in function open)
但如果我要做这样的事情:
>> # I know it's bad practice to import all items from the namespace
>> from gzip import *
>> open
>>(function open at 0x26E88F0)
对于我的控制台会话的其余部分,似乎对open
函数的所有调用都不会使用内置函数,而是使用gzip
模块中的函数。有没有办法将Python中的内置函数重新定义为原始函数?如果我参考了所需的功能,这很容易,如下所示:
def MyOpen(path):
print('Trivial example')
open = MyOpen
如果覆盖了这些引用后,如何获取内置函数的引用?
答案 0 :(得分:13)
您只需删除全局:
即可del open
或者您可以导入__builtin__
module(Python 2)或builtins
module(Python 3)以获取原始内容:
import __builtin__
__builtin__.open
名称查找首先进入全局命名空间,然后进入内置命名空间;如果删除全局名称open
,它将不再存在,并且名称查找将进入内置命名空间,或者您可以通过导入的模块直接访问该命名空间。