2017-01-24 17 views
0

関数で計算された変数にアクセスしたいが、戻り値ではない。私は別の関数でこの関数を呼び出すので、戻り値を変更できません(これは人々が通常やっていることです)。私は、変数の前にグローバル使用して試してみましたが、私は外でそれを呼び出すときに、私は次のようなエラーがあります:NameError:それ以外の関数から変数にアクセスする:Python

def function(): 

    global DA 

    DA = something 

    .... 

return something_different 

print DA #(outside the function) 

私は比較的午前:グローバル名「DA」が 私のコードは次のようになります定義されていないがPythonの初心者です。多分、私がここで紛失していることが明らかです。ありがとう!

+0

[グローバル変数を作成した関数以外の関数でグローバル変数を使用する](http://stackoverflow.com/questions/423379/using-global-variables-in-a-function-other-than-作成したもの) – davedwards

+0

あなたは実際に 'function'を呼び出しましたか?関数内のコードは関数が呼び出されたときにのみ実行され、関数を定義して呼び出してもグローバルな 'DA'には値が割り当てられません。 – ShadowRanger

+0

あなたの答えに感謝します。私がfunction()を呼び出すと、DAではなく戻り値が返されます – Sasha

答えて

0

まず、関数の外でDAを定義する必要があります。 globalではありません。新しい変数を作成し、グローバルスコープに挿入します。 globalキーワードは、関数にローカルで同じ名前の新しい変数を作成するのではなく、既存の定義DAを参照するように関数に指示します。これはデフォルトとは反対です。これは、関数内で関数内で(等号付きで)変数を割り当て、同じ名前のグローバルスコープの変数の定義をローカルで上書きし、元の定義を復元します関数のスコープ外。

+0

関数の外で 'DA'を定義する必要はありませんが、唯一の定義が関数内にある場合は、関数を実際に呼び出す必要があります(そして' global'を定義するコードパスを渡らなければなりません)。割り当てが行われます。 – ShadowRanger

関連する問題