在 Spyder 控制台 (REPL) 上,我发出import matplotlib.pyplot as plt
。它是最顶层的命名空间,即对应于globals()
。
在Spyder启动文件中,我定义了一个函数来将图形窗口提升到顶部。
def TKraiseCFG( FigID = None ):
import matplotlib.pyplot as plt
# The rest is just context
#-------------------------
# Assigning to plt unnecessary if
# imported plt is same object as in
# caller's scope
plt = inspect.currentframe().f_back.f_globals['plt'] # plt=globals()['plt']
# https://stackoverflow.com/a/78732915
if FigID is not None: plt.figure( FigID )
cfm = plt.get_current_fig_manager()
cfm.window.attributes('-topmost', True)
cfm.window.attributes('-topmost', False)
return cfm
in引用plt
的对象和REPL 引用的TKraiseCFG()
对象是同一个吗?plt
进一步的背景(不是主要问题): 我无法想象一个控制台/REPL(甚至多个控制台)使用多个matplotlib.pyplot
。但我刚刚开始了解Python,所以我可能是错的。matplotlib.pyplot
但是,对于单个公共的情况,我正在寻找一种让所有范围都可以访问它的方法,以便我可以编写类似的便利/实用函数TKraiseCFG()
(几周前在阅读各种页面后拼凑起来的)。不幸的是,我当前的方法要求代码调用包含一个专门名为referencing 的TKraiseCFG()
变量。plt
matplotlib.pyplot
是的,这是同一个对象。虽然我找不到明确说明这一点的 matplotlib 文档。
您可以测试 plt 对象是否指向与
is
运算符相同的实例,如下所示: