modというモジュールがあり、関数funcを持っているとしましょう。モジュールをインポートしてfuncを実行し、変数varをそのスコープに公開します。Pythonがスコープに公開する
a.func() # and func can do stuff with var
どうすればいいですか?
modというモジュールがあり、関数funcを持っているとしましょう。モジュールをインポートしてfuncを実行し、変数varをそのスコープに公開します。Pythonがスコープに公開する
a.func() # and func can do stuff with var
どうすればいいですか?
モジュールにvar
が定義されているモジュールをインポートするか、func()
に引数としてvar
を渡します。
結局のところ、これは最も洗練されたソリューションかもしれません。すべての変数を含むクラスを渡すか、モジュールを渡すこともできます。 – nikitautiu
おそらく、変数varを渡すための引数をfunc()に追加する必要があります。 func()でvarを変更する場合は、関数に新しい値を返します。 (必要に応じて簡単にmultiple return valuesにすることができます)。
変数を関数に渡します。単一のモジュールと同じようにモジュール間で同じように動作します。
# module a
def func(v):
print v
# module b
import a
var=42
a.func(var)
値を変更する必要がある場合は、それを返します。呼び出し元は、同じ変数に戻すなど、必要な場所に配置することができます。リストなどの
# module a
def func(v):
return v + 1
# module b
import a
var=42
var = a.func(var) # var is now 43
いくつかのオブジェクトは、可変であり、機能によって変更することができます。あなたはそれらを返す必要はありません。時にはそれらを返すのが便利ですが、私はそれを表示しません。
# module a
def func(v):
v.append(42)
# module b
import a
var=[] # empty list
a.func(var) # var is now [42]
私は実際に関数に渡すことはしませんが、funcは実際にスクリプトを作成するためのものです。私は、いくつかの変数をグローバル変数としてエクスポーズしたいだけです。 – nikitautiu