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