2011-08-09 6 views
0

modというモジュールがあり、関数funcを持っているとしましょう。モジュールをインポートしてfuncを実行し、変数varをそのスコープに公開します。Pythonがスコープに公開する

a.func() # and func can do stuff with var 

どうすればいいですか?

+0

私は実際に関数に渡すことはしませんが、funcは実際にスクリプトを作成するためのものです。私は、いくつかの変数をグローバル変数としてエクスポーズしたいだけです。 – nikitautiu

答えて

2

モジュールにvarが定義されているモジュールをインポートするか、func()に引数としてvarを渡します。

+0

結局のところ、これは最も洗練されたソリューションかもしれません。すべての変数を含むクラスを渡すか、モジュールを渡すこともできます。 – nikitautiu

0

おそらく、変数varを渡すための引数をfunc()に追加する必要があります。 func()でvarを変更する場合は、関数に新しい値を返します。 (必要に応じて簡単にmultiple return valuesにすることができます)。

0

変数を関数に渡します。単一のモジュールと同じようにモジュール間で同じように動作します。

# 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] 
関連する問題