什么是TypeError: 'NoneType'对象是不可迭代的意思?例子:

for row in data:  # Gives TypeError!
    print(row)

当前回答

这意味着data的值为None。

其他回答

因为使用for循环的结果只是一个值,而不是一组值

pola.py

@app.route("/search")
def search():
    title='search'
    search_name =  request.form.get('search')
    
    search_item =   User.query.filter_by(id=search_name).first()

    return render_template('search.html', title=title, search_item=search_item  ) 

search.html(错误的)

{% for p in search %}
{{ p }}

search.html(正确)

<td>{{ search_item  }}</td>

这意味着data的值为None。

另一种可能产生这种错误的情况是,当你设置某个值等于函数的返回值时,却忘记实际返回任何值。

例子:

def foo(dict_of_dicts):
    for key, row in dict_of_dicts.items():
        for key, inner_row in row.items():
            Do SomeThing
    #Whoops, forgot to return all my stuff

return1, return2, return3 = foo(dict_of_dicts)

这是一个很难发现的错误,因为如果行变量恰好在某个迭代中为None,也会产生错误。发现它的方法是跟踪在最后一行失败,而不是在函数内部。

如果你只从一个函数返回一个变量,我不确定是否会产生错误…我怀疑错误"'NoneType'对象在Python中不可迭代"在这种情况下实际上是在暗示"嘿,我试图遍历返回值并将它们按顺序分配给这三个变量但我只得到None来迭代"

我在数据库里对熊猫犯了这个错误。

此错误的解决方案是在集群中安装库 在这里输入图像描述

当你得到None Exception时,继续循环,

例子:

   a = None
   if a is None:
       continue
   else:
       print("do something")

这可以是来自DB或excel文件的任何可迭代对象。