Python函数调用作为返回值作用域

时间:2012-10-21 15:15:59

标签: python

def biggest(aDict):
    if aDict.values() == []  :
        return None

    lengths =[]
    for e in aDict:
        lengths.append(len(aDict[e]))

    return max(lenghts)

biggest({'U': []})或其他任何内容都会产生错误:

NameError: global name 'lenghts' is not defined

长度在我的函数中定义,所以你可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

因为您有return max(lenghts)并且您的变量名为lengths

答案 1 :(得分:1)

这只是一个拼写错误。

lengthslenghts不同。

答案 2 :(得分:1)

Python解释器在封闭范围中查找变量 - 当它找不到本地时 - 直到它达到全局范围。

未能找到长度 - 由于拼写错误,它应该是长度 - 它开始在全局范围内查找它。未能找到它,它报告说它没有在全球范围内找到 - 暗示它也未能在本地范围内找到它。

这里更紧凑 - 更不容易出错(拼写错误的变量更少) - 你的功能变体:

def biggest(aDict):
    if not aDict:
        return None
    return max(len(val) for val in aDict.values())