Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何恢复我意外重写的内置文件?_Python_Built In - Fatal编程技术网

Python 如何恢复我意外重写的内置文件?

Python 如何恢复我意外重写的内置文件?,python,built-in,Python,Built In,我在一个交互式python会话中将set用作变量名时意外地重写了它-有没有任何方法可以让我不必重新启动会话就可以访问原始的set函数 (我在那节课上有很多东西,我不想做,当然如果必要的话我可以做。)你可以使用\uuuuuuu内置的: >>> import __builtin__ >>> __builtin__.set <type 'set'> 导入内置的__ >>>内置设备 或者简单地说(不需要导入): >>\uuuuuuuuuuuuuuuuu

我在一个交互式python会话中将
set
用作变量名时意外地重写了它-有没有任何方法可以让我不必重新启动会话就可以访问原始的
set
函数


(我在那节课上有很多东西,我不想做,当然如果必要的话我可以做。)

你可以使用
\uuuuuuu内置的

>>> import __builtin__
>>> __builtin__.set
<type 'set'>
导入内置的__ >>>内置设备
或者简单地说(不需要导入):

>>\uuuuuuuuuuuuuuuuuuuuuu.set
:

导入内置代码 >>>内置组件
发件人:

CPython实施细节:用户不应触摸
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;信息技术
严格来说,这是一个实现细节。想要覆盖值的用户
在
内置项
名称空间中,应导入
\uuuuuuuuuuuuuuuuuuuuuuuuu内置项
(否) 并适当修改其属性


只需删除隐藏内置项的名称:

>>> set = 'oops'
>>> set
'oops'
>>> del set
>>> set
<type 'set'>

如果在定位屏蔽名称的定义位置时遇到问题,请检查从当前名称空间到内置名称空间的所有名称空间;查看哪些作用域可能适用于您当前的情况。

要使用内置包装器,请首先在
X

工作完成后,将其设置为
None
,并将原始地址设置回内置函数

范例

  • X=\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuiInstance
  • \uuuuuuuuuuuuuiInstance=myininstance
  • 工作完成了

    __builtin__.isinstance=None 
    
    __builtin__.isinstance=X 
    

  • 在Python 3中不适用于我。当我删除
    open
    时,我发现一个错误,即没有定义它。@TomášZato:那么您从未在当前名称空间中创建一个名称来屏蔽它。如果没有一个例子,我不能告诉你们更多,也许你们想为此提出新的问题?请不要假设你有完全相同的情况,请在投票前在新的会议中测试你的假设。我在回答中所描述的工作原理与Python 3所示完全相同。很抱歉,我确实误解了这种情况。在我的例子中,open实际上是通过内置模块替换的,而不仅仅是局部变量的别名。@TomášZato:对,我已经更新了这个问题,明确指出您需要检查所有范围,包括内置的作用域。那么,如果
    builtins.open
    方法被更改了,我该怎么办?@TomášZato,那么据我所知,无法将其取回。如果您的应用程序需要这样做,那么您应该保持对这些变量的引用完整。
    >>> set = 'oops'
    >>> set
    'oops'
    >>> del set
    >>> set
    <type 'set'>
    
    >>> import builtins
    >>> builtins.set
    <type 'set'>
    
    __builtin__.isinstance=None 
    
    __builtin__.isinstance=X