2013-11-09 74 views
10

我在一個函數中設置了一個字符串,然後試圖在另一個字符串中打印,發現字符串從未改變過。難道我做錯了什麼?Python變量「重置」

定義變量在我的腳本的頂部

CHARNAME = "Unnamed" 

功能設置變量

def setName(name): 
     CHARNAME = name 
     print CHARNAME 

使用功能

print CHARNAME 
setName("1234") 
print CHARNAME 

輸出

Unnamed 
1234 
Unnamed 

回答

13

當您在函數中做CHARNAME = name函數時,您正在爲該範圍定義它只有。即它不能在函數之外訪問。因此,全球 vriable CHARNAME(具有價值"Unnamed"),是不變的,你繼續調用該函數

你實際上並沒有覆蓋全球變量CHARNAME要打印的內容。如果你想,你必須把global CHARNAME全球化在功能setName變量CHARNAME定義之前:

def setName(name): 
    global CHARNAME 
    CHARNAME = name 
    print CHARNAME 

或者,您可以returnCHARNAME從函數的值:

def setName(name): 
    return name 

CHARNAME = setName('1234') 

當然這是無用的,你也可以做CHARNAME = '1234'

+0

感謝您的快速答覆!這兩個修補程序都適用於我 – Zooty