2011-09-22 15 views

答えて

4

あなたは基本的に2つの選択肢があります。

1つ目は、2番目の関数にパラメータとして渡すことです。 (最初の機能に値の変更を見たい場合は、参照タイプ(dict/listなど)でオブジェクトを上書きしないでください。変更するだけです(a = a + [b]ではなくa.append(b)

第二は、シングルトンとして使用することができますクラスを定義することです技術的には、これはまだ「グローバル」なものを定義しているが、それはあなたがグループ化されたものを維持することができます:。

class FooSingleton(object): 
    class_var = "foo" 

def func1(): 
    FooSingleton.class_var = "bar" 

def func2(): 
    print(FooSingleton.class_var) 

(あなたはまた、でこれを行うことができますクラスの代わりにdict;優先事項)

2

は、関数がパラメータを取る必要があり、かつその中にパラメータを渡す。

def one_function(): 
    one_variable = '' 
    return one_variable 

def another_function(a_param): 
    # do something to a_param 
    return 
0

技術的に可能であり、e .g。メモ化のために(しかし、それは通常、デコレータの後ろに隠れていると、彼らはまだそれについて少し気分が悪い場合でも正しいことを行うことを確認している人々によって実装のみ):

def g(): 
    if not hasattr(g, "x"): 
     g.x = 0 
    return g.x 

g() 
# 0 

g.x = 100 
g() 
# 100 
0
あなたはにクロージャを使用することができます

これを処理するか、より自然なことは、両方の関数をクラスのメソッドとして定義し、グローバル変数をクラスのメンバーとして定義することです。

関連する問題