2012-02-09 55 views
0

我已經構建了一個函數來創建一個字典並將其返回。該功能被稱爲get_values和結構如下:將字典傳遞給另一個函數

def initiate_values(directory): 
    for file in glob.glob(os.path.join(directory, '*.[xX][lL][sS]')): 
     title = os.path.basename(file).lower() 
     if title == 'etc.xls': 
      wb = xlrd.open_workbook(file) 
      wb = wb.sheet_by_name(u'Sheet1') 
      get_values(file, wb)  

def get_values(): 
    info_from_etc = dict() 
    # build dict 
    return info_from_etc  

它的工作原理,在其創建的字典,然後當我嘗試和打印,它打印正確的價值觀。但是,當我嘗試從另一個函數調用此函數get_values時,字典將返回爲「無」。這是我的函數調用get_values -

def packager(): 
    info_from_etc = initiate_values() 
    print info_from_etC# this prints "None" 

我是什麼錯誤在這裏做了,我怎麼會在這裏返回正確的字典 - 也就是說,一本字典,是不是None

+3

此代碼返回字典就好了。您的真實代碼中還有其他內容。你爲什麼不發佈真實的代碼? – 2012-02-09 20:32:47

+1

您向我們展示的內容似乎是正確的(除了顯而易見的錯字)。我想麻煩在於你沒有向我們展示過的東西。請構建最短可能的完整程序來演示問題,並在此處複製粘貼。欲瞭解更多信息,請參閱http://sscce.org/ – 2012-02-09 20:33:25

+0

在這裏適合我。我懷疑這個代碼比這裏展示的更多。 – Keith 2012-02-09 20:35:27

回答

3

您需要return字典從initiate_values

def initiate_values(directory): 
    for file in glob.glob(os.path.join(directory, '*.[xX][lL][sS]')): 
     title = os.path.basename(file).lower() 
     if title == 'etc.xls': 
      wb = xlrd.open_workbook(file) 
      wb = wb.sheet_by_name(u'Sheet1') 
      return get_values(file, wb) # added `return' 
    return {} # or some other value 
1
info_from_etc = initiate_values() 

initiate_values不返回任何東西,所以被Python默認情況下,它返回None。你應該能夠根據你想要做什麼找出在哪裏放置return語句。

0

我同意你確實需要在你的initiate_values()函數中返回字典,但是你也在given_values函數中給出get_values兩個參數(file,wb),並且你沒有在聲明中提供它。這似乎也可能存在問題。

相關問題