2016-02-17 77 views
0

我是python的新手,正在試驗局部變量和全局變量。 'example1'產生輸出'6,16,6',這是預期的。Python中局部和全局變量輸出的混淆

x=6 
def example1(): 
    print x 
    print (x+10) 
    print x 
example1() 

在第二示例:

x=6 
def example2(): 
    print x 
    print (x+10) 
print x 
example2() 

我預期 '6,16,6' 爲O/P,但得到了 '6,6,16' 作爲輸出。有人可以解釋爲什麼這發生在'example2()'? (我的觀點是'example2'中第二個'print x'語句指的是全局變量x(它等於6),因此覺得'6,16,6'應該是輸出)

+2

在第二個代碼示例中,第二個'print x'被執行_before_'example2'。因此6,6,16。 –

回答

1

在第二個示例中,x的第一個值將爲6.然後,您將調用方法example2(),該方法將首先打印x(即6),然後打印x+10

所以輸出將是:

6 
6 
16 

爲了更好地理解,這裏是執行你的程序的順序:

x=6 
def example2(): 
    print x 
    print (x+10) 
print x # this will be called first, so the first output is 6 
example2() # then this, which will print 6 and then 16 
+1

這清除了我的概念。非常感謝Alex! – shaw38

+0

謝謝。如果它能幫助你,你可以接受答案。 –

+0

對不起,如果它聽起來很簡單,但我不知道如何。你能告訴我嗎 ? – shaw38

0
x=6 
def example2(): 
    print x +"2nd call" 
    print (x+10) 
print x+" 1st call" # This print gets call first 
example2() 

我覺得這explains.1st打印變得稱爲第一個作爲它的功能和功能之外 如果你想輸出爲6,16,6使得chages如下

x=6 
def example2(): 
    print x 
    print (x+10) 
example2() 
print x 
+0

您提出的第一個編輯是我現在可以使用的內容,以瞭解我的程序的執行順序。感謝您的編輯! – shaw38

+0

N.B:在第一編輯的第3行和第5行中,需要將整數轉換爲字符串的顯式類型轉換,同時打印整數和字符串的連接。否則,會遇到錯誤。一個簡單的方法是:print str(x)+「2nd call」 – shaw38