python模块可以检测是否已导入import module
或from module import *
?类似于Python导入类型检测
if __something__=='something':
print 'Directly imported with "import ' + __name__ + '"'
else:
print 'Imported with "from ' + __name__ + ' import *"'
谢谢。
python模块可以检测是否已导入import module
或from module import *
?类似于Python导入类型检测
if __something__=='something':
print 'Directly imported with "import ' + __name__ + '"'
else:
print 'Imported with "from ' + __name__ + ' import *"'
谢谢。
不,不可能在模块的代码中检测到它。在第一次导入时,将执行模块主体并在sys.modules
中插入新的模块对象。只有在此之后,请求的名称才会插入到导入模块的名称空间中。
稍后导入时,模块主体甚至没有执行。因此,如果一个模块被首次导入为
import module
和第二次作为
from module import name
它有没有机会在第二导入过程中做任何事情。特别是,它不能检查它是如何导入的。
虽然Svens的回答可能是正确的,而且这看起来有点明显,但当我偶然发现这个问题时,这正是我真正想要的。
该模块将至少知道您已将一个输入参数传递给它。虽然允许对这个特定的脚本进行单元测试,而不需要在导入它的模块中执行单元测试。
import sys
def myfunction(blah):
return "something like: " + blah
noargs=len(sys.argv)
if noargs>1:
for i in range(noargs-1):
print myfunction(sys.argv[i+1])
但是,如果您没有输入参数,它并不能真正帮助您,Emilio。 :)
需要依靠这听起来非常非常破碎。 – 2011-05-12 19:41:01
我只是好奇=) – Emilio 2011-05-12 19:42:07