このようなことは可能ですか?
def loadModules():
import time
from myModule import *
def runFunction():
try:
print str(time.time())
print myFunction() # myFunction is in myModule (myModule.myFunction)
except NameError:
raise RuntimeError("Module was not initialized. Call loadModules() first.")
if (__name__ == "__main__"):
# this should fail
try:
runFunction()
except RuntimeError:
print "Exception raised as expected."
loadModules()
runFunction() # it should work now
モジュールを loadModules 関数内にインポートすると、モジュールがファイル レベルで宣言されないため、これは期待どおりには機能しません。
モジュールの場合、インポート後にステートメントをtime
追加できます。global time
ただし、次のように、インポートされたアイテムが不明な状況でこれを達成するにはどうすればよいfrom myModule import *
ですか? のすべての関数の名前が自動的にわかるわけではありませんmyModule
。仮にそうしたとしても、それは醜い世界的な声明になるでしょう。
基本的に、基本的にすべてのローカル変数を取得してグローバルにすることはできますか?
編集:これはテストコードで機能するように見えました:
def test():
import time
global time
print "Inside test function: %s" % str(time.time())
test()
print "outside function: %s" % str(time.time())
これも機能しました:
def test():
from time import time
global time
print "Inside test function: %s" % str(time())
test()
print "outside function: %s" % str(time())
ただし、これは機能しませんでした:
def test():
import time
print "Inside test function: %s" % str(time.time())
test()
print "outside function: %s" % str(time.time())