Python django-使用';其他:';-有趣的案例

Python django-使用';其他:';-有趣的案例,python,django,Python,Django,django的auth中间件具有以下代码: def get_user(request): """ Returns the user model instance associated with the given request session. If no user is retrieved an instance of `AnonymousUser` is returned. """ from .models import AnonymousUser

django的auth中间件具有以下代码:

def get_user(request):
    """
    Returns the user model instance associated with the given request session.
    If no user is retrieved an instance of `AnonymousUser` is returned.
    """
    from .models import AnonymousUser
    user = None
    try:
        user_id = request.session[SESSION_KEY]
        backend_path = request.session[BACKEND_SESSION_KEY]
    except KeyError:
        pass
    else: # <------ this doesnot have if-part, but how is it meant to work? 
        if backend_path in settings.AUTHENTICATION_BACKENDS:
            # more code... 
def get_用户(请求):
"""
返回与给定请求会话关联的用户模型实例。
如果未检索到任何用户,则返回“AnonymousUser”的实例。
"""
从.models导入匿名用户
用户=无
尝试:
user\u id=request.session[session\u KEY]
后端\路径=请求.会话[后端\会话\密钥]
除KeyError外:
通过

else:#The
else
构成了
try except

try:
    user_id = request.session[SESSION_KEY]
    backend_path = request.session[BACKEND_SESSION_KEY]
except KeyError:
    pass
else:  
    if backend_path in settings.AUTHENTICATION_BACKENDS:
        # more code... 
else
子句,该子句出现时必须在除子句之外的所有子句之后。如果try子句没有引发异常,那么它对于必须执行的代码非常有用

也就是说,只有当代码没有引发任何
keyrerrors

示例

假设我们有一本字典

>>> a_dict={"key" : "value"}
我们可以使用
try except
按如下方式处理
KeyError

>>> try:
...     print a_dict["unknown"]
... except KeyError:
...     print "key error"
... 
key error
现在,我们需要检查是否发生键错误,如果没有,则执行
else
子句

>>> try:
...     print a_dict["key"]
... except KeyError:
...     print "key error"
... else:
...     print "no errors"
... 
value
no errors
如果提出了除
之外的任何
子句,则不会执行该子句

>>> try:
...     print a_dict["unkown"]
... except KeyError:
...     print "key error"
... else:
...     print "no errors"
... 
key error

我不知道try Exception(尝试除外)
还有else部分:)我发现与实现相同逻辑的备选方案相比,使用else(其他)提高可读性的情况很少见。它也有
最终
:@doniyor@figs
finally
将始终运行,我想
for
也有
else
部分。如果不将从循环中断开,则运行。与
while
相同。谷歌搜索
python try的第一个结果是官方的python文档。它在谷歌上的摘录以“try…except语句有一个可选的else子句,当它出现时,必须紧跟在所有except子句之后”。请在提问之前尝试用谷歌搜索类似的东西。@l4mpi谢谢,我刚刚发布了这个问题,以便让其他还不知道的人更容易用谷歌搜索。仅仅知道而不分享是残忍的!