2017-05-17 44 views
0

我不明白當我運行函數時傳遞的變量是如何變化的。這些值最初設置爲無,因爲我希望它們在我運行該函數後進行更改,但沒有任何反應。所以我顯然做錯了什麼。我對Python相當陌生,會喜歡一些幫助。無法理解Python中的函數參數

def askUser(number_STRING, digits, array_NUM, chars): 

    print ("NOTE: Program can only convert mm, cm, m, and km") 
    number_STRING = raw_input("Type the number (9KM, 30M exactly like 
    that) you would like to convert to centimeters.") 
    digits = int(filter(str.isdigit, number_STRING)) 
    array_NUM = len([c for c in number_STRING if c.isdigit()]) 
    chars = str(number_STRING[array_NUM:]) 

def main(): 

    number_STRING = None 
    digits = None 
    array_NUM = None 
    chars = None 

    askUser(number_STRING, digits, array_NUM, chars) 

    print chars 
    print array_NUM 
    print digits 

main() 
+0

變量僅在函數內分配。但該函數不返回任何內容。 – trotta

+0

Python函數參數按值傳遞,而不是通過引用傳遞。尋找'python pass by value'來解釋。 – khelwood

回答

0

在一個函數中,變量被當作局部變量處理。要聲明全局變量,請使用global語法

例如,

def a(b): 
    global c 
    c = c + b 
+0

謝謝!那麼甚至是爭論點呢?我覺得我完全誤解了他們的使用。 – EthanR

+0

如果有幫助,我會很感激,如果你把我的答案標記爲接受。 關於你的問題;它就像其他編程語言一樣。參數用於允許一定程度的通用實現。 可以說如果你有一個方法/函數'openLink()'vs'openLink(link)'..如果你只是訪問一個全局變量,那麼它將來不太方便和可維護。將鏈接作爲參數傳遞可確保在函數作用域中處理正確的值 –