次のコードを考えてみましょう:それはそうと...インポート*
#main.py
From toolsmodule import *
database = "foo"
#toolsmodule
database = "mydatabase"
を、これは異なる内容で各モジュールに一つの変数を作成します。 mainからtoolsmodule内の変数を変更するにはどうすればよいですか?以下では動作しません:
toolsmodule.database = "foo"
次のコードを考えてみましょう:それはそうと...インポート*
#main.py
From toolsmodule import *
database = "foo"
#toolsmodule
database = "mydatabase"
を、これは異なる内容で各モジュールに一つの変数を作成します。 mainからtoolsmodule内の変数を変更するにはどうすればよいですか?以下では動作しません:
toolsmodule.database = "foo"
は、さらに別のfrom toolsmodule import *
を使用しない理由の多くのような音。
import toolsmodule
とすれば、toolsmodule.database = 'foo'
とすることができ、すべてが素晴らしいです。あなたがそのようにそれをしないのはなぜ
:
import toolsmodule
toolsmodule.database = "foo"
from toolsmodule import * #bad idea, but let's say you have to..
print database #outputs foo
これを試してみると、私はツールモジュールの内部から変数を変更できなくなってしまったと思います。これは検証する必要があります。 – David
ニシキヘビ変数名は、単に変数にラベルされています。 import *
これらのラベルはすべてローカルなので、データベースを設定するときは、toolsmoduleの変数ではなくローカル変数を置き換えます。そのため、この操作を行います。
toolsmodule.py:その後、
database = "original"
def printdatabase():
print "Database is", database
そして実行します。
import toolsmodule
toolsmodule.database = "newdatabase"
toolsmodule.printdatabase()
を出力
Database is newdatabase
(注)その後、別のモジュールからの場合もあることimport *
に変更が反映されていませんでした。
簡潔に:from x import *
を使用しないでください。私が知っているすべての文書が悪い考えだとは言っているにもかかわらず、なぜこのようなことにすべての初心者が残っているのか分かりません。
私はこれを知っていますが、これらの変数を多く使用しています。長いモジュール名がありますので、余計な入力を避けたいと思います。 – David
モジュール名を短くしてください: 'import longmodulename as sname'。これで 'sname'は' longmodulename'を参照します。 – user225312
'toolsmodule'を毎回入力しない場合は、以下を実行できます:' import toolsmodule as tm'。こうすることで、名前空間を正気に保ち、型を節約できます。 – miku