2011-10-30 10 views
2

私は多少Pythonの初心者ですが、私は今働いているものと非常によく似たプログラムを持っていると誓っています。しかし、何らかの理由で、私はそれを動作させることはできません。私は自分の問題を突き止めることができ、それを使って遊ぶ偽のプログラムを作りました。if文で変数の値を代入すると

yes 
4 
2 

なぜ見出し変数の見出しが値4を保持しません:

global heading 
global heading2 
global a 

heading=2 
a=2 
heading2=4 

def function(): 
    if a==2: 
     heading=heading2 
     print 'yes' 
     print heading 

function()  
print heading 

これが表示されるものである:ここではどのようなプログラムがありますか?私はリターンの向こうにすべてを向けることを試みた。うまくいきませんでした。私は関数のかっこ内に変数を入れてみました。どちらもうまくいかなかった...私が間違っていることを知っていますか?

答えて

3

ライン:

heading=heading2 

は、あなたが関数に渡さheadingと呼ばれる他のvaraibleへ異なるあるheadingと呼ばれる新しいローカル変数を作成します。

あなたは関数が追加することによって、外部変数に割り当てることができます:あなたは見出しに割り当てる前

global heading 

を:

def function(): 
    global heading 
    if a==2: 
     heading=heading2 
     print 'yes' 
     print heading 
+0

私はそれを逃したとは思わない!ありがとう!!! – user1020797

0

機能の内部では、あなたがheadingと呼ばれるローカル変数を作成しています。これは関数の外で宣言された同じheadingではありません。

4

globalステートメントは関数外では意味がありません。あなたの代わりに地元のものを導入する、グローバル変数を変更したい場合は、グローバルを使用していない、機能も

def foo(): 
    global x 
    x = x2 

globalを配置する必要があります。

+0

+1は「グローバルを使用しない」です。 –

関連する問題