擅长:python、mysql、java
<p>布赖恩对这件事很在行。所以您需要扩展<code>catch_warnings</code>来保存/恢复全局<code>__warningregistry__</code></p>
<p>像这样的事情可能行得通</p>
<pre><code>class catch_warnings_plus(warnings.catch_warnings):
def __enter__(self):
super(catch_warnings_plus,self).__enter__()
self._warningregistry=dict(globals.get('__warningregistry__',{}))
def __exit__(self, *exc_info):
super(catch_warnings_plus,self).__exit__(*exc_info)
__warningregistry__.clear()
__warningregistry__.update(self._warningregistry)
</code></pre>