2014-09-12 13 views
0

Возможно, это не вопрос логики программирования, но что может быть лучше всего использовать. У меня есть два пути, которые могут быть лучшим способом использования. Если будет другой способ, я буду более чем счастлив узнать.как проверить условия

Условия/Значения

permission = True 
user = {"id": 1, "username": "it.dumb", "password": "", "locked": True} 

Первая часть

if not permission: 
    return "Error, you are not permitted" 

if not user: 
    return "Error, user not found" 

if not user["locked"]: 
    return "Error, user is not locked" 

user["locked"] = False 
return user 

Вторая часть

if permission: 
    if user: 
     if user["locked"]: 
      user["locked"] = False 
      return user 
     else: 
      return "Error, user is not locked" 
    else: 
     return "Error, user not found" 
else: 
    return "Error, you are not permitted" 

Как суммирование этих двух кодов находится внутри метода;)

+2

* "Плоский лучше, чем вложенный" * ('import this'). Кроме того, вы должны «поднять» ошибки, а не «возвращать» сообщение об ошибке. – jonrsharpe

ответ

3

Очень пифонический ответ - плоский лучше, чем вложенный, и лучше просить прощения, чем просить разрешения.

class AuthenticationError(Exception): 
    pass 

.... 

if not permission: 
    raise AuthenticationError("Error, you are not permitted") 

if not user: 
    raise AuthenticationError("Error, user not found") 

if not user["locked"]: 
    raise AuthenticationError("Error, user is not locked") 

user["locked"] = False 
return user 
Смежные вопросы