my_var = 3
assert('my_var' in locals())
import a_module
assert('a_module' in locals())
from sys import *
assert('stdin' in locals())
我也认为你可以注入对locals()
and的调用globals()
?
无论如何,我喜欢 python,因为它对导入非常明确。如果使用了名称,您通常可以准确地追溯到该名称的定义位置。但是,我最近遇到了一些模块,我想在其中找到名称qux
的定义位置。模块本身包含 no from something import *
, no locals
or globals
,但是当我 CTRL+F 为该名称时,我只在表达式的 RHS 上找到它,没有定义!
所以我的问题是:一个名字可以通过哪些机制进入本地命名空间?正常导入可以注入我的本地命名空间吗?