2014-08-28 96 views
0

我是初學者在Python和通過學習Python的艱難的方式學習。找不到在我的代碼中的錯誤的原因python

不幸的是,我不斷收到一個錯誤,不知道爲什麼。

下面的代碼:

def new(num_buckets=256): # Creates list aMap and fills it with 256 empty lists. 
    """ Initializes a Map with the given number of buckets.""" 
    aMap = [] 
    for i in range(0, num_buckets): 
     aMap.append([]) 
    return aMap 

new() 
print aMap 

奇怪的是我不斷收到一條消息說,阿馬帕,沒有定義,即使我只是跑一個函數創建它作爲一堆名單內空水桶中。

感謝您的幫助。

+2

呃..但不是'aMap'僅定義,因此範圍的你'new'功能裏面?你想做'print(new())'嗎?或'temp = new()print(temp)'? – EdChum 2014-08-28 20:15:26

+2

我覺得你不太明白'return'的作用,以及變量的作用範圍。 – Blorgbeard 2014-08-28 20:16:30

+0

你需要處理返回變量。你可以做result = new()然後打印結果; – TheOneWhoPrograms 2014-08-28 20:16:33

回答

7

new()返回aMap,但你永遠不會在任何地方存儲。你想:

aMap = new() 

一般來說,除非你明確聲明(通過globalnonlocal 語句),名稱只存在於它被定義的範圍。在這種情況下,名稱aMap只存在於功能new內。爲了讓該名稱存在於函數之外,您需要爲其分配一些內容。

Python3.x只有