python - 有没有办法在删除后恢复内置函数?
问题描述
删除这样的内置函数后,我想在不重新启动解释器的情况下恢复它。
>>> import builtins
>>> del builtins.eval
>>> builtins.eval = None
我尝试使用 重新加载内置模块importlib
,但没有恢复 eval。
>>> import importlib
>>> importlib.reload(builtins)
<module 'builtins' (built-in)>
>>> eval("5 + 5")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not callable
我还尝试__builtins__
从另一个模块分配一个变量。那也没有用。
>>> import os
>>> __builtins__ = os.__builtins__
>>> eval()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not callable
有没有办法在删除后恢复内置函数?
解决方案
我认为 of 的使用模式与builtins
您建议的不同。您通常做的是为您的目的重新绑定一个内置名称,然后使用它builtins
来恢复功能:
eval = None
eval('5 + 5')
# TypeError: 'NoneType' object is not callable
import builtins
eval = builtins.eval
eval('5 + 5')
# 10
或(正如@ShadowRanger 所评论的那样),在这种特定情况下更简单:
eval = None
eval('5 + 5')
# TypeError: 'NoneType' object is not callable
del eval
eval('5 + 5')
# 10
推荐阅读
- php - 卢比符号 (₹) 在 Firefox 中不起作用
- google-play - 嵌入脚本引擎和 iOS 或 Android 商店批准或拒绝
- nginx - Sendgrid 品牌链接与 nginx 代理
- chromium-embedded - CEFSHARP 视频播放器在 weibo.com 网站上无法使用
- javascript - 是否可以强制 morphia 将 ObjectId 映射到十六进制表示?
- python - 新手:使用 TensorFlow MNIST 代码示例的 Keras:错误的预测
- c# - 如何在程序中运行2个线程
- javascript - 如何更改堆积条形图颜色并隐藏 y 轴?
- gitlab - GitLab 修改现有运行器以从另一个非主分支构建
- database - Spring:如何手动重置连接池的连接?