gpt4 book ai didi

python - 撤消 Python 内置的覆盖

转载 作者:太空宇宙 更新时间:2023-11-03 12:20:58 25 4
gpt4 key购买 nike

在 Python 中有几个 built-in functions .以打开为例打开。我可以通过执行以下操作启动 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)

看来,对于我的控制台 session 的其余部分,所有对 open 函数的调用都不会使用内置函数,而是使用 gzip 模块中的函数.有什么方法可以将Python中的内置函数重新定义回原始函数吗?如果我有对所需功能的引用,这很容易,如下所示:

def MyOpen(path):
print('Trivial example')

open = MyOpen

一旦这些引用被覆盖,您如何获得对内置函数的引用?

最佳答案

您可以简单地删除全局:

del open

或者您可以导入 __builtin__ module (Python 2)或 builtins module (Python 3) 得到原来的:

import __builtin__

__builtin__.open

名称查找首先到您的全局命名空间,然后到内置命名空间;如果您删除全局名称open,它将不再妨碍并且名称查找会进入内置命名空间,或者您可以直接通过导入的模块访问该命名空间。

关于python - 撤消 Python 内置的覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28903648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com