2016-09-22 18 views
0

私は新しいプロジェクトのためにPythonを試しています。その状態で、いくつかのグローバル変数が必要です。ハードコードされた値を変更せずにテストするために、私はthoses変数を再割り当て機能させるためにしようとしました:Pythonでグローバル変数に割り当てる?

foo = None; 

def setFoo(bar): 
    global foo = bar; 

setFoo(1); 

をしかし、これは取得:

File ".\test.py", line 4 
    global foo = bar; 
      ^
SyntaxError: invalid syntax 

私はすでににhigly関連twoquestionsを読みました私の問題は、明らかにPythonのいくつかの落とし穴を逃した。

誰でも私を啓発できますか?

+1

別々の行に 'global foo'と' foo = bar'となります。 –

+0

補足として、 ';'を使う必要はありません。ラインを終了する。 Pythonはそれらを必要としません。 –

+0

さて、それは簡単なものだった。 – DrakaSAN

答えて

3

globalと両方のステートメントです。それらを同じ行に混在させることはできません。

3
foo = None; 

def setFoo(bar): 
    global foo 
    foo = bar 

setFoo(1); 
1

saurabhのbaidが指摘したように、正しい構文はglobalキーワードを使用

foo = None 

def set_foo(bar): 
    global foo 
    foo = bar 

set_foo(1) 

では、関数はグローバルスコープ(モジュール即ち範囲)にアクセスすることを可能にする

も気づきますどのように変数をsnake_caseに変更し、セミコロンを削除しましたか?セミコロンはPythonで不要で、機能は一般的にsnake_caseです:)

+0

"は使用すべきではありません"なぜ?私が読んだところからは、彼らは不必要なものですが、読みやすさやコードの品質を損なうものではありません。 – DrakaSAN

+0

@DrakaSAN、それは一般的にunPythonicと見なされますが、まれに1つの行に複数のステートメントを使用する理由があると思いますが、個人的には、プログラムにノイズを追加する理由がわかりません。 –

+0

@DrakaSAN予想される言語の使用に合致しない方法で冗長な句読点を導入することによって、可読性を傷つけることは間違いありません。それがCのようにPythonを試してみてはいけません。 – khelwood

1

globalfoo = bar別々の行に

foo = None 

def setFoo(bar): 
    global foo 
    foo = bar 

setFoo(1) 

セミコロンを使用しないでください: Python: What Does a Semi Colon Do?

1

Pythonはあなたを必要としません。明示的に変数を宣言し、それ以外のことを指定しない限り、割り当てた変数に関数スコープがあると自動的に仮定します。 globalキーワードは、別の方法でそれを伝えるために提供される手段です。また、グローバルとして宣言しても、値を割り当てることはできません。正しい方法は

foo = None 

def setFoo(bar): 
    global foo 
    foo = bar 

setFoo(1) 
関連する問題