2013-05-30 52 views
1

好的,我目前正在做一個項目,在python中製作二十一點遊戲,我遇到了一些麻煩。我的一個問題是我不知道什麼時候將變量定義爲全局變量,特別是在if語句的函數中。如果我在if語句之外有一個全局變量,那麼我是否必須在if語句中聲明變量是全局變量?例如:if語句中的函數全局變量

x = 5 
def add(): 
    global x <--- ? 
    x += 1 
    if x == 7: 
     global x <--- ? 
     x = 5 

我很確定我需要第一個問號的「全局x」,但第二個問號呢?如果我想要我的if語句更新全局變量,我是否還需要在if語句中放置「全局x」?或者,函數開頭的全局x是否使if語句全局內的x?另外,如果我想在這裏返回x,我應該在哪裏做?

+1

最好儘量避免使用全局變量,只有當它們是**時才需要。 –

回答

3

只有一個global聲明就夠了。

docs

global語句是保持整個 當前碼塊的聲明。

x = 5 
def add(): 
    global x 
    x += 1 
    if x == 7: 
     x = 5 

另外,如果我想回到X這裏,我應該在哪裏做呢?

如果你在你的函數使用global那麼return x必須出現在global x聲明後,如果您沒有使用任何global聲明,也沒有定義任何局部變量x那麼你就可以在任何地方return x在功能。

如果你已經定義了一個局部變量x那麼return x必須出現在定義之後。

+1

其實在幾乎所有的情況下*沒有*全球聲明是足夠的;-) – Voo