我正在创建一个名为>>> print re.compile(r'at\s+((?:\w+(?:\s+|$)){3})').findall(str1)
['the train station ']
(Github link)的模块,其中我为另一个模块(例如Qt
)添加别名,这样当我导入PyQt4
时我就在导入Qt
的事实:
PyQt4
示例from Qt import QtWidgets # this really imports PyQt4.QtGui
模块:
Qt
但是,如果我在Qt.py末尾添加# Qt.py
import sys
import PyQt4.Qt
sys.modules["Qt"] = PyQt4
PyQt4.QtWidgets = PyQt4.QtGui
,则print sys
等于sys
:
None
为什么print sys
>>> None
“打破”并且可以避免破坏它?
这是在OS X上的Python 2.7.11中。
@ Lol4t0 - 这是一个我只使用标准模块的例子:
sys
因此,导入此选项将导致“无打印:
# Xyz.py
import os
import sys
sys.modules['Xyz'] = os
print sys # this will print "None"
答案 0 :(得分:3)
当不再有对模块的引用时,它将通过用None
替换它们来删除所有的全局变量。
在完成执行之前,您需要记住sys.modules['Xyz']
的旧版本(即当前模块)。