关于python:多个赋值操作返回对象不可迭代

Multiple assignment operation returns object is not iterable

本问题已经有最佳答案,请猛点这里访问。

我不知道这意味着什么:

(success, admin_id) = login(email, password)

登录方法如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
def login(email, password):
    try:
        user = db.session.query(Admin).filter_by(email=email).first()        

        valid_role = 'Admin'

        if valid_role in user.role:      
            return user
    except Exception as e:
        print e

    return None

它返回typeerror:'admin'对象不可iterable或valueerror:当我只返回user.id时,有太多的值无法解包。谢谢你的帮助。


你的函数时返回一个对象;either安Admin()实例: </P >

1
2
if valid_role in user.role:      
    return user

None或在端: </P >

1
return None

这不是适合的期望中的函数时返回两个值,这是什么,这expects在线: </P >

1
(success, admin_id) = login(email, password)

either在线调整,对接收到的用户只读,或修理你的函数返回的用户ID和成功的标志。 </P >

"那么,你latter require Rewrite你的函数: </P >

1
2
3
4
5
6
7
8
9
10
11
12
def login(email, password):
    try:
        user = db.session.query(Admin).filter_by(email=email).first()        

        valid_role = 'Admin'

        if valid_role in user.role:      
            return True, user.id
    except Exception as e:
        print e

    return False, None

现在你的函数总是时返回两个项目,either True和用户ID(不是面向用户),或在FalseNone。。。。。。。 </P >


返回多个值(tuple)从你的函数,你能做的: </P >

1
2
# when user is admin
return True, user.id

在案例中的用户是管理员或有不安是一个例外: </P >

1
return False, None

SO与(success, admin_id) = login(email, password)success状况是returned从你的函数作为一个布尔值,和admin_ideither是一个有效的用户ID或None </P >