“类型为'NoneType'的对象没有len()”错误

时间:2012-08-05 13:30:23

标签: python web2py

我在这段代码上看到了奇怪的行为:

images = dict(cover=[],second_row=[],additional_rows=[])

for pic in pictures:
    if len(images['cover']) == 0:
        images['cover'] = pic.path_thumb_l
    elif len(images['second_row']) < 3:
        images['second_row'].append(pic.path_thumb_m)
    else:
        images['additional_rows'].append(pic.path_thumb_s)

我的web2py应用程序给了我这个错误:

if len(images['cover']) == 0:
TypeError: object of type 'NoneType' has no len()

我无法弄清楚这有什么不对。也许是一些范围问题?

3 个答案:

答案 0 :(得分:15)

您为images['cover']分配了新内容:

images['cover'] = pic.path_thumb_l

代码中某处的pic.path_thumb_lNone

你可能想要追加:

images['cover'].append(pic.path_thumb_l)

答案 1 :(得分:8)

你的问题是那个

if len(images['cover']) == 0:

检查图像['cover']值的长度,你打算做的是检查它是否有值。

改为:

if not images['cover']:

答案 2 :(得分:1)

第一次分配:images['cover'] = pic.path_thumb_l时,它会将images['cover']中最初存储的空列表的值替换为pic.path_thumb_l的值None

此行中的代码可能必须为images['cover'].append(pic.path_thumb_l)