将字典传递给另一个函数

时间:2012-02-09 20:30:42

标签: python

我已经构建了一个函数来创建一个字典并将其返回。此函数称为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 个答案:

答案 0 :(得分: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 :(得分:1)

info_from_etc = initiate_values()

initiate_values不返回任何内容,因此默认情况下,它返回None。您应该能够根据您的目标找出返回语句的位置。

答案 2 :(得分:0)

我同意你确实需要在init_values()函数中返回字典,但是你也在initiate_values函数中给get_values两个参数(file,wb),而你在声明中没有给它任何参数。似乎那里也可能存在问题。