1
私は素朴な問題を抱えていますが、変数がグローバルであればコードを使っていくつかの変数を使いたいのですが、それは問題ありません。しかし、私は関数を使用したいので、私は将来の仕事でいくつかのパラメータを渡すことができます。 a_variable
以来Python関数でグローバル名を設定する方法は?
たとえば、このコードがエラーと間違っている、
def fun1():
print a_variable
def fun2(a_variable='hello, world'):
fun1()
fun2('hello, world')
エラー、
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-42-31e8e239671e> in <module>()
5 fun1()
6
----> 7 fun2('hello, world')
<ipython-input-42-31e8e239671e> in fun2(a_variable)
3
4 def fun2(a_variable='hello, world'):
----> 5 fun1()
6
7 fun2('hello, world')
<ipython-input-42-31e8e239671e> in fun1()
1 def fun1():
----> 2 print a_variable
3
4 def fun2(a_variable='hello, world'):
5 fun1()
NameError: global name 'a_variable' is not defined
はどのようfun1
がそれを使用することはできません、fun2
に有効なのですか?どうすれば改善できますか? fun1(a_variable)
こんにちは、ありがとう。これは機能します。しかし、私は本当にこれが好きではありません。これはグローバル変数を持ちますが、実際には 'a_variable'は "fun2"の名前空間で "グローバル"にする必要があります。 – insomnia
多分、関数の外側で(しかし最初の関数呼び出しの前に) 'global a_variable'行を置くべきでしょう。そして変数globalを作るために 'fun2'を呼び出す必要はありません。 – Aemyl
この場合、関数外の 'global a_variable'は何も行いません。 'fun2'関数の中で変数がローカルとして解釈されるので、おそらくはうまくいきません。あなたが明示的にインタプリタにグローバル変数を参照するよう指示しない限りです。言い換えれば、おそらく 'fun2()'の中に 'global a_variable'ステートメントが必要です。 – Aemyl